如何在Linux上grep文件中两个不同单词的出现次数?

如何在Linux上grep文件中两个不同单词的出现次数?

如何在 Linux 上的文件中 grep 两个不同单词(例如“register”和“evn”)的出现次数?

输出应如下所示:

registered:20

答案1

如果反向输出格式(先计数,后单词)也可以接受,这也可以,并且很容易添加更多单词:

tr -c '[:alpha:]' '\n' < /path/to/file | sort | uniq -c | grep -w 'register\|evn'
  • 计算每个单词的出现次数,即使同一行中多次出现。
  • 计算单词的精确匹配数,不包括带后缀的变体。

答案2

使用awk

awk '/register/ {r++} /evn/ {e++} END {printf("register:%d\nevn:%d\n", r, e)}' /path/to/file 

答案3

可以单独计算:

$ word=register; count=`grep -o $word /path/to/file| wc -l`; echo $word:$count
$ word=evn; count=`grep -o $word /path/to/file| wc -l`; echo $word:$count

答案4

word="registered"
echo $word:$( grep -wc $word /path/to/file )

与 Bash/Ksh 和 GNU grep 配合使用

相关内容