如何在Unix / Linux中的文件中找到10个最常见的单词?
我尝试在Unix中使用此命令:
$排序file.txt | uniq -c |排序-nr |头-10
但是我不确定它是否正确以及在大文件中它是否显示10个最常用的单词。
答案 0 :(得分:0)
我有一个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命令和关联数组来实现单词计数功能,并根据出现次数减少输出。