如何在 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 配合使用