如何根据第一个字段和第二个字段的第一个 n 个字符删除 CSV 中的重复行?

Chr*_*s C 4 text-processing csv

对于 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
Run Code Online (Sandbox Code Playgroud)

预期输出:

12,12345,a
123,12345,a
1234,12,b
1234,12345,a
567,567,a
567,6789,a
Run Code Online (Sandbox Code Playgroud)

iru*_*var 8

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
Run Code Online (Sandbox Code Playgroud)


ste*_*ver 5

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
Run Code Online (Sandbox Code Playgroud)