
한 줄에 다양한 단어가 포함된 텍스트 파일이 있습니다.
파일에서 가장 자주 나타나는 12개의 줄을 찾아서 표시하려면 어떻게 해야 합니까?
나는 스크립팅 명령을 잘 사용하지 못합니다.
명령을 사용하는 방법을 이해하고 명령에 대한 지식을 확장할 수 있도록 명령과 설명을 얻을 수 있다면 좋을 것입니다!
답변1
내장된 명령을 사용하면 쉽게 이 작업을 수행할 수 있습니다.
- 파일의 내용을 피드합니다
sort
. 다음 단계에는 이것이 필요합니다. - 이것은
uniq -c
. 각 줄의 고유한 발생 횟수를 계산합니다. 유사한 선이 인접하지 않은 경우 이전에 정렬하지 않으면 작동하지 않았을 것입니다. - 그런 다음 이를 다른 에 공급하면
sort
이제 역순(r
)으로 정렬되고 출력의 숫자(n
) 해석을 기반으로 정렬됩니다uniq
. 숫자 옵션이 필요합니다. 그렇지 않으면 숫자 앞에 공백이 있으면 잘못된 결과가 나올 수 있습니다(참조:GNUsort
의 도움이상). - 마지막으로
head
.
그러면 명령은 다음과 같습니다.
sort test.txt | uniq -c | sort -rn | head -n 12
여기의 출력에는 실제 발생 횟수가 포함됩니다.
원시 행 목록만 얻으려면 출력을 다음으로 파이프할 수 있습니다 sed
.
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
예:
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
첫 번째 명령에서 출력되지만 다음에서 2만 선택합니다 head
.
6 Hello there!
3 Look at me!
두 번째 명령의 출력:
Hello there!
Look at me!