如何在Unix / Linux中的文件中找到10个最常见的单词

时间:2018-11-19 15:30:22

标签: linux unix

如何在Unix / Linux中的文件中找到10个最常见的单词?

我尝试在Unix中使用此命令:

$排序file.txt | uniq -c |排序-nr |头-10

但是我不确定它是否正确以及在大文件中它是否显示10个最常用的单词。

1 个答案:

答案 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命令和关联数组来实现单词计数功能,并根据出现次数减少输出。