我有一个巨大的文本文件,在liux上有大约400,000行80个字符宽。
需要“展开”文件,将四行合并为一行 最后有1/4行,每行80 * 4个字符长。
有什么建议吗?
答案 0 :(得分:10)
perl -pe 'chomp if (++$i % 4);'
答案 1 :(得分:2)
我希望我能正确理解你的问题。你有一个像这样的输入行(除了你的行更长):
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
答案 2 :(得分:2)
使用awk更简单的方法是:
awk '{ printf $0 } (NR % 4 == 0) { print }' filename
虽然如果你想要防止在没有尾随换行符的情况下结束,它会变得更加复杂:
awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename