質問

私は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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top