我有一个单词,我想检查它在文件中出现的百分比是多少(根据文件中单词的总数)?例如,如果我有单词“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
使用与所示相同的逻辑网址
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}
文件处理后打印计算出的数字