有没有一种方法可以按列进行“ uniq”处理?

我有一个.csv文件,如下所示:


stack2@example.com,2009-11-27 01:05:47.893000000,example.net,127.0.0.1

overflow@example.com,2009-11-27 00:58:29.793000000,example.net,255.255.255.0

overflow@example.com,2009-11-27 00:58:29.646465785,example.net,256.255.255.0

...

我必须从文件中删除重复的电子邮件(整行)(即overflow@example.com,上面示例中包含的行之一)。如何uniq仅在字段1(用逗号分隔)上使用?根据man,uniq没有列选项。


我尝试了一些东西,sort | uniq但是没有用。


catspeake
浏览 865回答 3
3回答

精慕HU

awk -F"," '!_[$1]++' file-F 设置字段分隔符。$1 是第一个领域。_[val]val在哈希_(常规变量)中查找。++ 增加,并返回旧值。! 返回逻辑非。最后有一个隐式打印。

婷婷同学_

要考虑多列。根据第1列和第3列排序并给出唯一列表:sort -u -t : -k 1,1 -k 3,3 test.txt-t : 冒号是分隔符-k 1,1 -k 3,3 基于第1列和第3列
打开App,查看更多内容
随时随地看视频慕课网APP