развертывание файла в Linux
Вопрос
У меня есть огромный текстовый файл, около 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
Не связан с StackOverflow