我如何'grep -c'并避免打印零'0'计数的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何'grep -c'并避免打印零'0'计数的文件相关的知识,希望对你有一定的参考价值。

命令'grep -c blah *'列出了所有文件,如下所示。

 % grep -c jill *
 file1:1
 file2:0
 file3:0
 file4:0
 file5:0
 file6:1
 % 

我想要的是:

 % grep -c jill * | grep -v ':0'
 file1:1
 file6:1
 % 

而不是像上面那样管道和grep输出输出,是否有一个标志来禁止列出0计数的文件?

SJ

答案

只需使用awk。例如使用GNU awk for ENDFILE

awk '/jill/{c++} ENDFILE{if (c) print FILENAME":"c; c=0}' *
另一答案

How to grep nonzero counts:

grep -rIcH 'string' . | grep -v ':0$'

  • -r Recurse子目录。
  • -I忽略二进制文件(感谢@tongpu,术士)。
  • -c显示比赛的数量。令人讨厌的是,包括0计数文件。
  • -H显示文件名,即使只有一个文件(感谢@CraigEstey)。
  • 'string'你的字符串就在这里。
  • .从当前目录开始。
  • | grep -v ':0$'删除0计数文件。 (感谢@LaurentiuRoescu

(我意识到OP不包括管道技巧,但这对我有用。)

以上是关于我如何'grep -c'并避免打印零'0'计数的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何grep和替换

如何使用 grep 在 `name=` 之后获取任何内容?

如何在 Linux 中 grep '---'? grep:无法识别的选项'---'

如何在同一窗口中执行 emacs grep-find 链接?

如何格式化我的 grep 输出以在行尾显示行号以及命中数?

如何让GREP只选择数值?