小编bir*_*rdy的帖子

当别名为'grep -R'时grep忽略管道

我正在尝试将 grep 搜索的输出通过管道传输到另一个 grep 的输入中。如:

grep search_query * | grep -v but_not_this
Run Code Online (Sandbox Code Playgroud)

但是第二个 grep 没有使用前一个搜索的输出。看起来第二个 grep 只是使用 * 代替。例如,

grep lcov *                                                                                          
tst/bits/Module.mk:21:$(call func_report_lcov)
tst/drivers/Module.mk:27:$(call func_report_lcov)
Run Code Online (Sandbox Code Playgroud)

但是当我想过滤掉包含“call”的结果时,

grep lcov * | grep -v call
...
Run Code Online (Sandbox Code Playgroud)

Grep 给了我工作区中不包含“调用”的每一行

环境信息:

  • 这发生在bash和fish中
  • 我像这样给 grep 命令取了别名 alias grep='grep -nR --color=always'

还有什么我可能会遗漏的吗?

shell grep pipe alias

3
推荐指数
1
解决办法
670
查看次数

标签 统计

alias ×1

grep ×1

pipe ×1

shell ×1