awk를 사용하여 중복된 내용이 포함된 줄만 저장하는 방법은 무엇입니까? [복사]

awk를 사용하여 중복된 내용이 포함된 줄만 저장하는 방법은 무엇입니까? [복사]

특정 열에 중복된 정보가 포함된 행을 삭제하는 방법은 알고 있지만 중복된 정보만 저장하는 방법은 모르겠습니다.

예를 들어:

3개의 열이 포함된 다음 텍스트(kk.txt)가 있습니다.

A 3 qs   
A 8 qs  
A 6 st  
B 3 qs  
A 5 qs  
C 9 st  
D 2 st  
C 3 st  

제가 신청하면,

awk '{if(! a[$1]){print; a[$1]++}}' kk.txt > kk2.txt

그것은 나에게 다음을 제공합니다:

A 3 qs  
B 3 qs  
C 9 st  
D 2 st

대신 나는 그 반대를 원합니다.

A 3 qs  
A 8 qs  
A 6 st  
A 5 qs  
C 9 st  
C 3 st  

어떤 아이디어가 있나요? ? ?

매우 감사합니다

답변1

D 2 st내가 올바르게 이해했다면 고유한 첫 번째 열이 있는 행을 제거하려는 경우(참고용으로 출력에 이 행이 없으므로 그렇지 않으면 sort -u -k2,3 infile필요한 것임) 다음을 수행하고 입력 파일을 처리할 수 있습니다. 열이 있는 위치를 인쇄하려면 두 번 #1이 여러 번 반복됩니다.

awk 'NR==FNR{seen[$1]++; next} seen[$1]>1' infile infile
A 3 qs
A 8 qs
A 6 st
A 5 qs
C 9 st
C 3 st

관련 정보