如何查找文件中单词出现的百分比

如何查找文件中单词出现的百分比

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

相关内容