用 GREP 计算一个短语的出现次数
我有一个包含一堆文件的目录。因此,当我需要查看任何文件是否包含某个短语时,我会使用
grep 'the phrase' mydir/*
有什么方法可以计算该短语在这些文件中出现的总次数?
我用过grep 'the phrase' mydir/* --count
但这会给出每个单独文件中的出现次数,而不是总数,这不是我想要的。
这应该这样做:
find mydir -print0 | xargs -0 grep 'the phrase' | wc -l
find mydir -print0
- 查找 mydirectory 中的所有文件并将它们打印为空终止行)
xargs -0
- 转换空终止行的流并将它们转换为引号分隔的参数,例如“mydir/file 1”“mydir/file 2”......现在可以将这些传递到 grep 的参数列表中。
wc -l
- 计算行数
空终止行业务与处理其中包含空格的文件有关,否则这些可能看起来像 grep 的多个参数。
它甚至比前两个响应更简单:
grep 'the phrase' mydir/* | wc -l
然后将所有匹配“mydir/*”的文件的 grep 输出发送到 wc -l。
grep 'the phrase' mydir/* --count | awk 'BEGIN { FS=":"; sum=0;} { sum = sum + $2; } END { print sum } '