Вопрос

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

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

какие-либо предложения?

Это было полезно?

Решение

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

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

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

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

Другие советы

perl -pe 'chomp if (++$i % 4);'

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

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top