첫 번째 필드와 두 번째 필드의 처음 n자를 기반으로 CSV에서 중복 행을 제거하는 방법은 무엇입니까?

첫 번째 필드와 두 번째 필드의 처음 n자를 기반으로 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

예상 출력:

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

관련 정보