如果输入是
foo,bar,baz
bar,baz,qux
qux,quux,baz
bar,foo,qux
waldo,fred,garply
输出应该是
foo,bar,baz
bar,baz,qux
waldo,fred,garply
正如您所看到的,记录是根据第三列的值进行重复数据删除的。如果多个记录具有相同的第三列值,则随机选择一个(或第一个;无关紧要)
答案1
awk 的惯用答案是awk -F, '!seen[$3]++' file
第一次在第三列中看到一个值时,将打印一行。
答案2
如果您不关心输出的顺序,可以直接使用sort
,如下所示。
-t,
将字段分隔符设置为“,”-k3
将排序键定义为第三个字段-u
表示只需要唯一的结果$ sort -t, -k3 -u file foo,bar,baz waldo,fred,garply bar,baz,qux $