私は別のフィールドに基づいて重複した行のセットを排除しようとしています。awk配列を使用して別のフィールドに基づいて重複列を削除しますか?
cat file.txt
1 345 a blue
1 345 b blue
3 452 c blue
3 342 d green
3 342 e green
1 345 f green
Iフィールド1及び2に基づいて、重複行を削除したいが、別々に各色のであろう。所望の出力:
for i in $(awk '{ print $4 }' file.txt | sort -u); do
grep -w ${i} |
awk '!x[$1,$2]++' >> output.txt
done
しかし、これは遅いです:
1 345 a blue
3 452 c blue
3 342 d green
1 345 f green
私は色以上for loop
その繰り返し処理を使用して、この出力を達成することができます。ループを使用せずにこの出力を得る方法はありますか?
ありがとうございます。
これは、 'sort'を使うと簡単になることが分かりました。何かが好きです: 'sort -u -k1,3 -k2,3'あなたが思うものを教えてください。 – Rish
私はロジックが不足しています。なぜあなたは '1 345青色 'を保っていますが、予想される出力に' 3 342 green'を落としていますか? – jlliagre
@jlliagre、申し訳ありません。修正されました。 – Rish