昨天朋友发来一面试题:使用shell统计某单词出现的次数

以hill为例,当时的想法是

cat a.txt | grep '\bhill\b' | sed -e 's/\ /\n/' | wc -l

当时考虑的比较简单,且没有把grep命令参数了解清除,导致写出了如下繁琐且很不完善的统计命令;想法是grep出所有单词以后再把空格替换为换行来统计,如果是双引号或者其他符号夹着某个单词就统计错误了.

今天写后台,想看一下某个接口出现的次数,看到grep -o可以只显示过滤出来的单词并换行

cat a.txt | grep -o '\bhill\b' | wc -l     # grep -o 只显示匹配的部分
cat a.txt | grep -w hill | wc -l           # grep -w 匹配某个单词

这就简单了..还是命令掌握不熟练