разворачивание файла в linux - PullRequest
0 голосов
/ 19 февраля 2009

У меня огромный текстовый файл, около 400.000 строк, 80 символов в liux.

Нужно "развернуть" файл, объединяя четыре строки в одну заканчивая тем, что имеет 1/4 строк, каждая строка длиной 80 * 4 символа.

есть предложения?

Ответы [ 3 ]

10 голосов
/ 19 февраля 2009
perl -pe 'chomp if (++$i % 4);'
2 голосов
/ 19 февраля 2009

Более простой способ сделать это с помощью awk:

awk '{ printf $0 } (NR % 4 == 0) { print }' filename

Хотя, если вы хотите защититься от попадания без завершающей строки, это немного сложнее:

awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename
2 голосов
/ 19 февраля 2009

Надеюсь, я правильно понял ваш вопрос. У вас есть такая строка ввода (за исключением того, что ваши строки длиннее):

abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF

Вы хотите вывод как это:

abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF

Следующая программа awk должна сделать это:

{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }

Запустите его так:

awk -f merge.awk data.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...