質問
私はliuxに約400.000ライン80 charachters広い、巨大なテキストファイルを持っています。
を1つに4行をマージ、ファイルを「展開」する必要があります ラインの1/4、80 * 4 charachters長い各行を有する終わる。
任意の提案ですか?
解決
の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