次の行の最初の列と2番目の列が現在の行と同じ場合、各行の最後の列を現在の行に印刷したいと思います。
私の入力ファイルは
A 123 BC
A 123 DD
A 123 TT
B 456 AA
B 456 RR
C 789 EE
希望の出力は
A 123 BC DD TT
B 456 AA RR
C 789 EE
ベストアンサー1
awk
:
awk '{a[$1FS$2]=a[$1FS$2]FS$NF} END {for(i in a) print i a[i]}'
a[$1FS$2]=a[$1FS$2]FS$NF
連想配列のキーをフィールド区切り文字で区切った最初の 2 つのフィールドに設定し、値をフィールド区切り文字で前の値に関連付けられた最後のフィールドに設定します。END {for(i in a) print i a[i]}
最後に実行したら、配列のキーを繰り返してa
キーとその値を印刷します。
例:
% cat file.txt
A 123 BC
A 123 DD
A 123 TT
B 456 AA
B 456 RR
C 789 EE
% awk '{a[$1FS$2]=a[$1FS$2]FS$NF} END {for(i in a) print i a[i]}' file.txt
A 123 BC DD TT
B 456 AA RR
C 789 EE