想要根据第一个字段打印唯一的行,保留该行的第一次出现并删除重复的其他出现。
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
寻找你的建议......
答案 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]}'