用于计算整个文件中单词出现次数的命令

时间:2014-02-06 12:53:01

标签: bash shell grep

我正在尝试计算文件中单词的出现次数。

如果一行中出现多次单词,我会计算为1。

以下命令将为我提供输出,但如果行有多次出现

,则会失败
grep -c "word" filename.txt

有没有一个班轮?

5 个答案:

答案 0 :(得分:15)

您可以使用grep -o来显示完全匹配,然后计算它们:

grep -o "word" filename.txt | wc -l

测试

$ cat a
hello hello how are you
hello i am fine
but
this is another hello

$ grep -c "hello" a    # Normal `grep -c` fails
3

$ grep -o "hello" a 
hello
hello
hello
hello
$ grep -o "hello" a | wc -l   # grep -o solves it!
4

答案 1 :(得分:2)

将awk中的RS设置为较短的。

awk 'END{print NR-1}' RS="word" file

答案 2 :(得分:0)

cat file | cut -d ' ' | grep -c word

这假定文件中的所有单词之间都有空格。如果标点符号连接到自身,或者在单词和它自身之间的单行上没有空格,则它们将被视为一个。

答案 3 :(得分:0)

GNU awk允许使用多个管道命令在单个命令中完成:

awk -v w="word" '$1==w{n++} END{print n}' RS=' |\n' file

答案 4 :(得分:-1)

grep word filename.txt | wc -l

grep打印匹配的行,然后wc -l打印匹配的行数