競合問題を解決しようとしましたが、次のシナリオに閉じ込められました。誰もが結果を得る方法を理解するのに役立ちますか?
説明する:3つの連続した行で構成される各グループは、1つの行に折りたたむ必要があります。
[出力は次のように共有されます。]
ファイルのデータ:
Abc 123,
zyxhj pqr
raj
ram:
vilas,
1234
jkal
yui
gshj
出力:
Abc 123,zyxhj pqr raj
ram:vilas,1234
jkal yui gshj
答え1
使用xargs
:
xargs -d'\n' -n3 <infile
\n
ewlineを区切り文字で3行ごとに読み取って印刷します。
使用paste
:
paste -d ' ' - - - <infile
スペース区切り文字を使用してデータを3つの列に貼り付けます。
使用awk
:
awk '{ printf "%s%s", $0, (NR%3?OFS:ORS) }' infile
各行をprintfし、NR(レコード数)がモジュロ3でない場合はOFS(出力フィールド区切り記号、デフォルトは空白)を印刷し、そうでない場合はORS(出力レコード区切り文字、デフォルトは改行)を印刷します。