次のスキーマがあります。
i-095erwr244r22cfeaa
TF-CLIENT
TF-StKML2
i-0c23232ac153534c5d
TF-CLIENT
TF-COMMON
TF-STEERR
i-043434e0934347eb5
TF-CLIENT
TF-ADFS
TF-COMMON
TF-STCLUSTER_1
TF-SwewCLUSTER3
私は次のような出力が欲しい
i-095erwr244r22cfeaa,TF-COMMON;TF-StKML2;
i-0c23232ac153534c5d,TF-CLIENT;TF-COMMON;TF-STEERR;
i-043434e0934347eb5,TF-CLIENT;TF-ADFS;TF-COMMON;TF-STCLUSTER_1;TF-SwewCLUSTER3
私はこれを試みます:
awk 'BEGIN{RS="i-"}NF>1{print substr(gensub(/\n/,";","g"),0,length($0)-0)}' sg1.txt
同様の投稿に基づいていますここにあります。私は次のような結果を得る
095erwr244r22cfeaa;TF-COMMON;TF-StKML2;
0c23232ac153534c5d;TF-CLIENT;TF-COMMON;TF-STEERR;
043434e0934347eb5;TF-CLIENT;TF-ADFS;TF-COMMON;TF-STCLUSTER_1;TF-SwewCLUSTER3
したがって、「i-0」パターンの先頭を切り取り、すべての出力にセミコロンを追加します。最初のエントリにはコンマが必要です。使ってみようかと思いました。sed結果から最初のセミコロンを変更します。しかし、最初に全体の出力をどのように取得できますか?
ベストアンサー1
私のGNUsed
提案tr
:
tr '\n' ';' < file | sed -E 's/(i-0[^;]*);/\n\1,/g'
出力:
i-095erwr244r22cfeaa,TF-CLIENT;TF-StKML2;
i-0c23232ac153534c5d,TF-CLIENT;TF-COMMON;TF-STEERR;
i-043434e0934347eb5,TF-CLIENT;TF-ADFS;TF-COMMON;TF-STCLUSTER_1;TF-SwewCLUSTER3;