Титла: Премахване на част/блок от средата на голям текстов файл. Публикувано от: Naka в Mar 19, 2012, 12:12 Имам голям текстов файл около 1GB организиран по редове (около 15 000 000)
Трябва да изрежа/премахна няколко блокове от средата на файла - например блокове с редове 100 000-101 000; 1 234 567-2 345 678; и т.н. Как може стане това, има ли някакви шелски команди дето правят подобно нещо или трябва да си пиша скрипт. Досега най-доброто за което се сещам е някаква комбинация с 'head' и 'tail' Титла: Re: Премахване на част/блок от средата на голям текстов файл. Публикувано от: edmon в Mar 19, 2012, 15:46 cut,cat , tail, head, grep, и тн.
Титла: Re: Премахване на част/блок от средата на голям текстов файл. Публикувано от: dejuren в Mar 19, 2012, 15:52 вариант: http://unix.stackexchange.com/questions/8619/how-can-i-cut-a-large-file-in-place
Титла: Re: Премахване на част/блок от средата на голям текстов файл. Публикувано от: Naka в Mar 19, 2012, 23:08 Аха ставало с sed. :)
Например това изтрива от 2-ра до 3-та линия; 5-та линия и от 7-ма линия до края на файла. Код: cat file.txt | sed '2,3d;5d;7,$d' Командите за изтриване са 2,3d 5d и 7,$d много команди на един ред се разделят с ; Друг начин да се напише е: Код: cat file.txt | sed -е '2,3d' -е '5d' -е '7,$d' Като го пробвах установих, че няма значение поредността на командите, може и да са рабъркани или в обратен ред. Поредността на редовете също се запазва, така както е била в началото. Например ако се изтрият редове 2до3 това не променя номерата на следващите редове. [_]3 [_]3 [_]3 Титла: Re: Премахване на част/блок от средата на голям текстов файл. Публикувано от: solarflux в Mar 19, 2012, 23:26 Аха ставало с sed. :) stop piping cats! безсмислено е след като сед може да си чете файлове директно... sed '2,3d;5d;7,$d' файл.тхт sed -е '2,3d' -е '5d' -е '7,$d' файл/тхт |