从数据集中过滤第二个字段,然后在输出中使用 uniq

从数据集中过滤第二个字段,然后在输出中使用 uniq

我有一个如下的数据集:

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

文件的输出如下

在此处输入图片描述

希望这可以帮助

相关内容