N個の連続した行で構成される各グループをタブで区切ってどのように1行に折りたたむことができますか? [コピー]

N個の連続した行で構成される各グループをタブで区切ってどのように1行に折りたたむことができますか? [コピー]

競合問題を解決しようとしましたが、次のシナリオに閉じ込められました。誰もが結果を得る方法を理解するのに役立ちますか?

説明する: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

\newlineを区切り文字で3行ごとに読み取って印刷します。


使用paste:

paste -d ' ' - - - <infile

スペース区切り文字を使用してデータを3つの列に貼り付けます。


使用awk:

awk '{ printf "%s%s", $0, (NR%3?OFS:ORS) }' infile

各行をprintfし、NR(レコード数)がモジュロ3でない場合はOFS(出力フィールド区切り記号、デフォルトは空白)を印刷し、そうでない場合はORS(出力レコード区切り文字、デフォルトは改行)を印刷します。

おすすめ記事