繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM