我有一个巨大的文本文件,在 liux 上大约有 400.000 行 80 个字符宽。
需要“展开”文件,将四行合并为一行,最终有 1/4 行,每行 80*4 字符长。
有什么建议么?
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
使用 awk 更简单的方法是:
awk '{ printf $0 } (NR % 4 == 0) { print }' filename
虽然如果你想防止在没有尾随换行符的情况下结束,它会变得有点复杂:
awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename