对于 3 列 csv 文件list.csv
,如何删除第一个字段匹配的后续重复行,并且仅第二个字段匹配的前 3 个字符?某些行的第二个字段的字符数少于 3 个。
列表.csv:
12,12345,a
12,12345,b
123,12345,a
1234,12,b
1234,12345,a
567,567,a
567,56712,a
567,56734,a
567,6789,a
预期输出:
12,12345,a
123,12345,a
1234,12,b
1234,12345,a
567,567,a
567,6789,a
答案1
sort
应该也可以
sort -t, -k1,1 -k2.1,2.3 -u <list.csv
12,12345,a
123,12345,a
1234,12,b
1234,12345,a
567,567,a
567,6789,a
答案2
awk -F, '!seen[$1,substr($2,1,3)]++' list.csv
12,12345,a
123,12345,a
1234,12,b
1234,12345,a
567,567,a
567,6789,a