我知道如何删除某一特定列中包含冗余信息的行,但不知道如何仅保存冗余信息
例如:
我有以下包含 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
就是您需要的),那么您可以执行以下操作并处理输入文件两次以打印列所在的行#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