在linux上展开文件

时间:2009-02-19 07:47:56

标签: linux file folding

我有一个巨大的文本文件,在liux上有大约400,000行80个字符宽。

需要“展开”文件,将四行合并为一行 最后有1/4行,每行80 * 4个字符长。

有什么建议吗?

3 个答案:

答案 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