Linux의 파일에서 가장 일반적으로 나타나는 줄을 가져옵니다.

Linux의 파일에서 가장 일반적으로 나타나는 줄을 가져옵니다.

한 줄에 다양한 단어가 포함된 텍스트 파일이 있습니다.
파일에서 가장 자주 나타나는 12개의 줄을 찾아서 표시하려면 어떻게 해야 합니까?
나는 스크립팅 명령을 잘 사용하지 못합니다.

명령을 사용하는 방법을 이해하고 명령에 대한 지식을 확장할 수 있도록 명령과 설명을 얻을 수 있다면 좋을 것입니다!

답변1

내장된 명령을 사용하면 쉽게 이 작업을 수행할 수 있습니다.

  • 파일의 내용을 피드합니다 sort. 다음 단계에는 이것이 필요합니다.
  • 이것은 uniq -c. 각 줄의 고유한 발생 횟수를 계산합니다. 유사한 선이 인접하지 않은 경우 이전에 정렬하지 않으면 작동하지 않았을 것입니다.
  • 그런 다음 이를 다른 에 공급하면 sort이제 역순( r)으로 정렬되고 출력의 숫자( n) 해석을 기반으로 정렬됩니다 uniq. 숫자 옵션이 필요합니다. 그렇지 않으면 숫자 앞에 공백이 있으면 잘못된 결과가 나올 수 있습니다(참조:GNU sort의 도움이상).
  • 마지막으로 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!

답변2

배포판에로그톱

cat your_file | logtop

로그 파일처럼 파일이 지속적으로 커지는 경우 다음을 시도해 보세요.

tail -f your_log | logtop

관련 정보