我正在尝试计算文件中的单词出现。
如果一行多次出现单词,我将计算为1。
以下命令将为我提供输出,但是如果行有多次出现Word
grep -c "word" filename.txt
有一个衬里吗?
您可以使用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
将rs设置为较短的rs。
awk 'END{print NR-1}' RS="word" file
gnu awk允许使用多个管道命令在单个命令中完成:
awk -v w="word" '$1==w{n++} END{print n}' RS=' |n' file
cat file | cut -d ' ' | grep -c word
这假设文件中的所有单词在单词之间都有空间。如果有标点符号将单词与自身的串联串联,或者在单词和本身之间的一行上没有空格,它们将算作一个。
grep word filename.txt | wc -l
grep
打印匹配的行,然后wc -l
打印匹配的行数