特定の列に重複した情報を含む行を削除する方法はわかっていますが、重複した情報のみを保存する方法はわかりません。
たとえば、
3つの列を含む次のテキスト(kk.txt)があります。
A 3 qs
A 8 qs
A 6 st
B 3 qs
A 5 qs
C 9 st
D 2 st
C 3 st
申し込むと、
awk '{if(! a[$1]){print; a[$1]++}}' kk.txt > kk2.txt
それは私に以下を与えます:
A 3 qs
B 3 qs
C 9 st
D 2 st
代わりに、私はその逆を望んでいます。
A 3 qs
A 8 qs
A 6 st
A 5 qs
C 9 st
C 3 st
どんなアイデアがありますか? ? ?
非常にありがとう
答え1
D 2 st
私が正しく理解したら、最初の列を持つ行を削除したい場合(出力用にこの行がないため、それ以外の場合はsort -u -k2,3 infile
必要です)、次のように入力ファイルを処理できます。列のある場所を印刷するには、2回#1が複数回繰り返されます。
awk 'NR==FNR{seen[$1]++; next} seen[$1]>1' infile infile
A 3 qs
A 8 qs
A 6 st
A 5 qs
C 9 st
C 3 st