キー列に基づくファイル行のマージ

キー列に基づくファイル行のマージ

〜区切り記号の値を含むテキストファイルがあります。最初の4列はキー列であるため、5列目の値に基づいて抽出する必要があります。ファイルは次のようになります。

S1~D1~1~1~abc
S1~D1~1~1~bef
S2~D1~1~2~xyz
S2~D1~1~2~mnp

出力は次のようにする必要があります

S1~D1~1~1~abcbef
S2~D1~1~2~xyzmnp

最後の列には改行文字がある場合がありますが、2 行を正しくマージするには削除する必要があります。

ベストアンサー1

awk '
  BEGIN{OFS = FS = "~"} 
  {x = $5; NF--; a[$0] = a[$0] x; next} 
  END{for(i in a) print i, a[i]}
' file
S1~D1~1~1~abcbef
S2~D1~1~2~xyzmnp

おすすめ記事