Bashで区切り文字を使用して1行に行を印刷する方法は?

Bashで区切り文字を使用して1行に行を印刷する方法は?

3つの分野でデータを収集しました。 3番目のフィールドデータを1行で印刷したいです。私が得たデータです。

$ cat file
1234  1234  dei_1/3,dei_2/3,dei_9/0,
dei_10/0,dei_8/4
2345  2345  dei_8/9,dei_5/6,dei_4/9
4244  4244  dei_0/9,dei_4/6,dei_4/1
4235  4235  dei_0/9,dei_4/6,dei_4/,de
i_9/7,dei_1/3,dei_2/3,dei_9/0

予想される結果:

1234  1234  dei_1/3,dei_2/3,dei_9/0,dei_10/0,dei_8/4
2345  2345  dei_8/9,dei_5/6,dei_4/9
4244  4244  dei_0/9,dei_4/6,dei_4/1
4235  4235  dei_0/9,dei_4/6,dei_4/,dei_9/7,dei_1/3,dei_2/3,dei_9/0

これまで私が持っているコード

while read file; do if [[ $file == 1 ]]; then echo -n; fi; done 

ベストアンサー1

次のスクリプトは、2つの数字で始まらないすべての行を前の行に関連付けます。

$ awk -v ORS="" '$1~/^[0-9]+$/ && $2~/^[0-9]+$/ && NR>1{printf "\n"}1' file
1234  1234  dei_1/3,dei_2/3,dei_9/0,dei_10/0,dei_8/4
2345  2345  dei_8/9,dei_5/6,dei_4/9
4244  4244  dei_0/9,dei_4/6,dei_4/1
4235  4235  dei_0/9,dei_4/6,dei_4/,dei_9/7,dei_1/3,dei_2/3,dei_9/0

ORSこれは空の文字列にリセットされる(出力レコード区切り文字)に依存します。最初の2つのフィールドが数字の場合(最初の行ではない)、改行が追加されます。

おすすめ記事