[英]How to find 10 most frequent words in the file in Unix/Linux
如何在Unix / Linux中的文件中找到10个最常见的单词?
我尝试在Unix中使用此命令:
$ sort file.txt | uniq -c | 排序-nr | 头-10
但是我不确定它是否正确,以及在大文件中是否显示10个最常用的单词。
我有一个shell演示来解决您的问题,即使您在一行中包含多个Word的文件也是如此
wordcount.sh
#!/bin/bash
# filename: wordcount.sh
# usage: word count
# handle position arguments
if [ $# -ne 1 ]
then
echo "Usage: $0 filename"
exit -1
fi
# realize word count
printf "%-14s%s\n" "Word" "Count"
cat $1 | tr 'A-Z' 'a-z' | \
egrep -o "\b[[:alpha:]]+\b" | \
awk '{ count[$0]++ }
END{
for(ind in count)
{ printf("%-14s%d\n",ind,count[ind]); }
}' | sort -k2 -n -r | head -n 10
只需运行./wordcount.sh filename.txt
说明
使用tr命令将所有大写字母转换为小写字母,然后使用egrep命令抓取文本中的所有单词并逐项输出它们。 最后,使用awk命令和关联数组来实现单词计数功能,并根据出现次数减少输出。 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.