我有一个如下的数据集:
AAAAA 11111 Data1
AAAAA 11111 Data2
AAAAA 11111 Data3
AAAAA 11112 Data4
AAAAA 11112 Data5
AAAAA 11112 Data6
AAAAA 11112 Data7
AAAAA 11113 Data8
AAAAA 11114 Data9
等等。我想根据第二个字段进行过滤,然后运行 uniq 以仅提取第一个条目。在本例中,我希望输出为:
AAAAA 11111 Data1
AAAAA 11112 Data4
AAAAA 11113 Data8
AAAAA 11114 Data9
这看起来似乎很简单,但我就是搞不懂这个方法。有什么帮助吗?
答案1
您可以使用sort
来完成工作:
sort -k2,2 -u
-k2,2
表示仅对第二列进行操作,-u
表示唯一。
答案2
有一个惯用的 awk 语句可以完成此操作:
awk '!seen[$2]++' file
仅当第一次看到第二列中的值时才打印出该行
答案3
您可以使用以下命令来解决问题
sort new.txt | rev | uniq -s 6 | rev
文件的输出如下
希望这可以帮助