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 sort
및 uniq
는 발생 횟수를 계산하는 데 사용되는 반면 while은 awk
4개의 발생이 발견되면 선택합니다.
4번 이상 나타나면 $1==4
로 변경하면 됩니다 $1>=4
.
이는 단일 문자열 라인에서만 작동하며 출력은 알파벳순으로 정렬됩니다.