![如何查找文件中单词出现的百分比](https://linux22.com/image/77171/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6%E4%B8%AD%E5%8D%95%E8%AF%8D%E5%87%BA%E7%8E%B0%E7%9A%84%E7%99%BE%E5%88%86%E6%AF%94.png)
我有一个单词,我想检查它在文件中出现的百分比是多少(根据文件中单词的总数)?例如,如果我有单词“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}
文件处理后打印计算出的数字