N本の連続行をシェルにグループ化しますか?

N本の連続行をシェルにグループ化しますか?

この形式のテキストファイルがあるとしましょう。

field1a
field2a
field3a
field1b
field2b
field3b

3本(または一般にN本)の連続ラインを組み合わせたいです。sedbashシェルで他のコマンドラインユーティリティを使用してこれを行うにはどうすればよいですか?

期待される出力

field1a:field2a:field3a
field1b:field2b:field3b

ベストアンサー1

 paste -sd '::\n' file

行がelf -dの場合、それ自体はで区切り、file改行文字はその順序で表示されます。spaste::d

 <file paste -d : - - -

pastestdin、stdin、およびstdin行を区切り文字で:開き、dstdinはfile

または:

 awk '{ORS=NR%3?":":"\n";print}' < file

出力レコード区切り文字は、改行文字かレコード(行)番号が3の倍数であるかOによって異なります。RS:RN

(入力のレコード数が3の倍数ではない場合、これらの方法は動作が異なります。)

おすすめ記事