以下のファイルがあります。
47196436 47723284 name1 1.77273
42672249 52856963 name2 1.06061
52856963 430695 name2 1.16667
55094959 380983 name3 1.55613
17926380 55584836 name4 1.02461
3213456 34211 name4 1.11
54321 34211 name4 1.23
最初の2つの列は私のテーブルの主キーに対応しています。同じ名前がある場合は、すべてのキーが同じ行になるように行をマージしようとします。
出力を取得しようとしています。
47196436 47723284 name1
42672249 52856963 430695 name2
55094959 380983 name3
17926380 55584836 3213456 34211 54321 name4
次のコマンドを使用して部分的に達成できました。
awk '{ x[$3]=x[$3] " " $2; }
END {
for (k in x) print k,x[k] >"OUTPUT1";
}' ccc.txt
しかし、それは私に正しい出力を提供しません。上記のコマンドをさらに修正するには、助けが必要です。
ベストアンサー1
不器用だが仕事を果たしたようだ
awk '$3 != prev {if (NR != 1) print prev; prev=$3; delete a};
!($1 in a){a[$1]++; printf "%s ", $1};
!($2 in a){a[$2]++; printf "%s ", $2};
END {print prev}' ccc.txt
47196436 47723284 name1
42672249 52856963 430695 name2
55094959 380983 name3
17926380 55584836 3213456 34211 54321 name4