grep能否同时输出匹配行内容和匹配总计数?
结论
- 标准grep(含常见的GNU grep、BSD grep版本)本身不支持同时输出匹配行内容和匹配总行数。
-c参数优先级最高,只要启用该参数,grep会强制抑制所有匹配行的内容输出,仅返回最终的匹配计数,因此-cn组合无法实现预期效果。
替代方案(仅执行一次grep)
如果你不想重复扫描目标文件,也不想使用awk实现,可以借助tee和进程替换实现需求,命令如下:
grep 'one' foo | tee >(wc -l)
运行后会先输出所有匹配的行内容,最后输出匹配总行数,和两次执行grep的效果完全一致,且只会对目标文件做一次扫描、执行一次grep匹配。
内容的提问来源于stack exchange,提问作者noob2021
相关产品推荐
相关产品推荐

