처음 두 열을 기반으로 파일에서 두 개의 중복 항목을 제거하는 방법

처음 두 열을 기반으로 파일에서 두 개의 중복 항목을 제거하는 방법

test.txt처음 두 열을 기반으로 파일에서 두 개의 중복 항목을 제거 해야 합니다 .

tom,22,777
tom,22,888
tom,18,54
ray,44,43843

예상되는 결과:

tom,18,54
ray,44,43843

사용해 보았지만 cat test.txt | sort -u t, k1,1 k2,2작동하지 않습니다

답변1

다음을 사용할 수 있습니다 awk. 파일을 두 번 처리합니다. 첫 번째 및 두 번째 필드의 발생 횟수를 한 번 계산한 다음 줄을 다시 인쇄합니다(횟수가 1인 경우).

awk -F, 'NR==FNR{seen[$1,$2]++;next};seen[$1,$2]==1' infile infile

답변2

grep(1)한 가지 접근 방식은 GNU (for ) 를 가정 fgrep -f -하고 입력 필드에 영숫자 문자만 포함되어 있다고 가정하는 것입니다.

cut -d , -f 1,2 file.csv | sort | uniq -d | fgrep -vwf - file.csv

답변3

이 시도

 cat file.txt | grep -v  "`cut -d , -f 1,2 file.txt | uniq -d`"

관련 정보