最初の2つのフィールドのデータを次のようにグループ化したいと思います。
サンプル:
CHECK|checkadm|block1
CHECK|checkadm|block2
CHECK|checkadm|block3
CHECK|checkadm|block4
TEST|testadm|block1
TEST|testadm|block2
TEST|testadm|block3
最終出力
CHECK|checkadm|block1|block2|block3|block4
TEST|testadm|block1|block2|block3
答え1
どうすればいいですか?大量に各行の接続:
awk '
BEGIN{FS="|"; OFS=""}
{a[$1"|"$2]=a[$1"|"$2]"|"$NF}
END{for (i in a) print i, a[i]}
' file
TEST|testadm|block1|block2|block3
CHECK|checkadm|block1|block2|block3|block4
答え2
そしてGNUデータの混合バージョン1.8(入力が既に質問の例のようにソートされていると仮定):
$ datamash -t'|' --collapse-delimiter='|' -g1,2 collapse 3 <ip.txt
CHECK|checkadm|block1|block2|block3|block4
TEST|testadm|block1|block2|block3
datamash -t'|' -g1,2 collapse 3 <ip.txt | tr ',' '|'
入力にカンマ文字がない場合は、以前のバージョンを使用できます。