awk根据列字段打印唯一的行:

时间:2014-11-11 14:34:06

标签: awk

想要根据第一个字段打印唯一的行,保留该行的第一次出现并删除重复的其他出现。

Input.csv

10,15-10-2014,abc
20,12-10-2014,bcd
10,09-10-2014,def
40,06-10-2014,ghi
10,15-10-2014,abc

期望的输出:

10,15-10-2014,abc
20,12-10-2014,bcd
40,06-10-2014,ghi

尝试过以下命令和完整

awk 'BEGIN { FS = OFS = "," }  { !seen[$1]++ } END { for ( i in seen) print $0}' Input.csv

寻找你的建议......

3 个答案:

答案 0 :(得分:20)

您将“see”的测试放在脚本的操作部分而不是条件部分。将其更改为:

awk -F, '!seen[$1]++' Input.csv

是的,这就是整个剧本:

$ cat Input.csv
10,15-10-2014,abc
20,12-10-2014,bcd
10,09-10-2014,def
40,06-10-2014,ghi
10,15-10-2014,abc
$
$ awk -F, '!seen[$1]++' Input.csv
10,15-10-2014,abc
20,12-10-2014,bcd
40,06-10-2014,ghi

答案 1 :(得分:0)

这可以给你你想要的东西:

awk -F, '{ if (!($1 in a)) a[$1] = $0; } END '{ for (i in a) print a[i]}' input.csv

答案 2 :(得分:0)

typo在语法上。

  

awk'{if(!(a中的$ 1))a [$ 1] = $ 0; } END {用于(a中的i)打印a [i]}'