파일에 n번 나타나는 줄만 유지

파일에 n번 나타나는 줄만 유지

test.txt다음과 같이 한 줄에 문자열이 포함된 파일이 있습니다 .

AA
BNT
AA
KIO
LO
LO
POY
LO
II
LO
AA
AA
II
AA
BNT
POY
YTR
BNT
LL
BNT

Linux를 사용하여 파일을 반복하고 4번 발생하는 줄만 반환하는 방법은 무엇입니까?

원하는 출력:

AA
BNT
LO

감사해요

답변1

AWK 사용:

awk '{ seen[$0]++ } seen[$0] == 4' test.txt

이는 각 줄이 본 횟수를 세고, 그 횟수가 정확히 4일 때 한 줄을 출력합니다(따라서 4번 이상 본 줄은 한 번 출력됩니다).

정확히 4번 발생하는 행만 보려면 다음 명령을 사용하십시오.

awk '{ seen[$0]++ } END { for (line in seen) if (seen[line] == 4) print line }' test.txt

답변2

sort test.txt | uniq -c | awk '$1==4 {print $2}'

with sortuniq는 발생 횟수를 계산하는 데 사용되는 반면 while은 awk4개의 발생이 발견되면 선택합니다.

4번 이상 나타나면 $1==4로 변경하면 됩니다 $1>=4.

이는 단일 문자열 라인에서만 작동하며 출력은 알파벳순으로 정렬됩니다.

관련 정보