![awk를 사용하여 중복된 내용이 포함된 줄만 저장하는 방법은 무엇입니까? [복사]](https://linux55.com/image/120769/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%A4%91%EB%B3%B5%EB%90%9C%20%EB%82%B4%EC%9A%A9%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EC%A4%84%EB%A7%8C%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
특정 열에 중복된 정보가 포함된 행을 삭제하는 방법은 알고 있지만 중복된 정보만 저장하는 방법은 모르겠습니다.
예를 들어:
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