有没有一种按列“Uniq”的方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我有这样一个.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但不管用。

提问于
用户回答回答于
sort -u -t, -k1,1 file
  • -u独树一帜
  • -t,所以逗号是分隔符。
  • -k1,1对于密钥字段1

测试结果:

overflow@domain2.com,2009-11-27 00:58:29.793000000,xx3.net,255.255.255.0 
stack2@domain.com,2009-11-27 01:05:47.893000000,xx2.net,127.0.0.1 
用户回答回答于
awk -F"," '!_[$1]++' file
  • -F设置字段分隔符。
  • $1是第一个领域。
  • _[val]抬头看val在杂凑中_(一个常规变量)。
  • ++增量,并返回旧值。
  • !返回逻辑不。
  • 最后有一个隐含的指纹。

扫码关注云+社区