특정 열에 중복된 정보가 포함된 행을 삭제하는 방법은 알고 있지만 중복된 정보만 저장하는 방법은 모르겠습니다.
예를 들어:
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