파일에서 단어 발생률을 찾는 방법

파일에서 단어 발생률을 찾는 방법

단어가 있는데 파일에 해당 단어의 몇 퍼센트가 나타나는지 확인하고 싶습니다(파일의 총 단어 수를 기준으로). 예를 들어 "you"라는 단어가 8개 단어가 포함된 파일에 2번 나타나면 출력은 25%가 됩니다.

나는 시도했다: fgrep -ow

답변1

다음과 같이 파일의 총 단어 수를 얻을 수 있습니다.

nw=`wc -w < /path/to/file`

단어/패턴의 발생 횟수

occurrences=`egrep -c <pattern> /path/to/file`

그런 다음 쉽게 백분율을 계산하고 결과를 변수에 넣을 수 있습니다.

result=`echo "scale=2; $occurrences*100/$nw" | bc`

추가하려면 예를 들어 %다음과 같이 할 수 있습니다. 다음과 같이 하세요

echo $result'%'

답변2

표시된 것과 동일한 논리를 사용하십시오.URL

tr ' ' '\n' < file.txt | awk '{if($0=="her"){nmw+=1}}END{print ((nmw*100)/NR)}'

답변3

그리고 awk:

awk -vw="word" 'BEGIN{RS="[^a-zA-Z]+"} $0==w{c++} END{printf "%.1f%%\n",c*100/NR}' file
  • -vw="word""word" 를 포함하는 변수가 주어지면 awk그것은 w단어이고 백분율을 원합니다.
  • BEGIN{RS="[^a-zA-Z]+"}줄 구분 기호를 문자를 제외한 모든 항목으로 설정하면 각 단어가 개별적으로 처리됩니다.
  • $0==w{c++}단어가 발견되면 카운터를 증가시킵니다.
  • END{printf "%.1f%%\n",c*100/NR}파일 처리 후 계산된 숫자 인쇄

관련 정보