複数の列を含むファイルがあり、列3の値が繰り返される行を識別しました。
入力例:
A B C
1 2 APPLE
3 4 PEAR
9 3 LEMON
8 3 ORANGE
8 2 APPLE
3 4 APPLE
9 3 LEMON
8 3 PEAR
以下を使用して、3列の単語がどれだけ頻繁に繰り返されるかを計算できます。
awk '{print $3}' [input filename] | sort | uniq -c > [output filename]
出力:
3 APPLE
2 PEAR
2 LEMON
1 ORANGE
私が望むのは、3回繰り返される行を維持することです。
希望の出力:
APPLE
または
1 2 APPLE
8 2 APPLE
3 4 APPLE
すべての列が元の入力ファイルから印刷されるのか、3番目の列値のみが印刷されるのかは重要ではありません。
を使用すると、sort -u
少なくとも1回発生するすべての行が印刷されますが、これは私が望むものではありません。
ベストアンサー1
もう一つの方法は、ファイルを2回チェックすることです。まず、参照を作成し、2番目に必要に応じてフィルタリングします。
$ awk 'NR==FNR{a[$3]++; next} a[$3]==3' ip.txt ip.txt
1 2 APPLE
8 2 APPLE
3 4 APPLE
$ awk 'NR==FNR{a[$3]++; next} a[$3]==2' ip.txt ip.txt
3 4 PEAR
9 3 LEMON
9 3 LEMON
8 3 PEAR
$ awk 'NR==FNR{a[$3]++; next} a[$3]<2' ip.txt ip.txt
A B C
8 3 ORANGE