단어가 있는데 파일에 해당 단어의 몇 퍼센트가 나타나는지 확인하고 싶습니다(파일의 총 단어 수를 기준으로). 예를 들어 "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}
파일 처리 후 계산된 숫자 인쇄