【问题标题】:Bash - pipe multiple grep and print outputBash - 管道多个 grep 并打印输出
【发布时间】:2015-10-27 12:35:58
【问题描述】:

我正在编写一个 shell 脚本,它将 grep 文档中的某些单词,然后以彩色输出显示找到的单词。

echo $(egrep -wi --color=always 'error|exception' $logFile)

现在我想将此 grep 与另一个 grep 结合起来以排除一些结果 为此,我想将上述命令传递给 grep 命令以排除某些模式

grep -vi '<status>error</status>'

由于某种原因,当我尝试执行命令时失败了

echo $(egrep -wi --color=always 'error|exception' $logFile | $(grep -v '<STATUS>ERROR</STATUS>') )

或者即使我尝试

echo $(egrep -wi --color=always 'error|exception' $logFile | grep -v '<STATUS>ERROR</STATUS>')

我做错了什么?为什么会失败?

【问题讨论】:

  • output=$(egrep -wi --color=always 'error|exception' $logFile | grep -v 'ERROR') echo $output
  • echo $(foo) 本质上与 foo 本身相同。
  • 它不工作==> 第 87 行:错误:找不到命令
  • 发布您的第 87 行。执行带有标志“-x”的脚本并发布第 87 行。
  • 第 87 行是上面提到的命令: echo $(egrep -wi --color=always 'error|exception' $logFile | $(grep -v 'ERROR' ) )

标签: linux bash shell grep


【解决方案1】:

问题似乎只附加了 egrep、--color=always 和 -i。

egrep -wi --color=always 'error|exception' /tmp/log.log | grep -v '<STATUS>ERROR</STATUS>'  

没用,但是

egrep -w --color=always 'error|exception' /tmp/log.log | grep -v '<STATUS>ERROR</STATUS>'

egrep -wi --color 'error|exception' /tmp/log.log | grep -v '<STATUS>ERROR</STATUS>'

grep -wi --color=always 'error|exception' /tmp/log.log | grep -v '<STATUS>ERROR</STATUS>'

确实... 但我不知道为什么你的解决方案不起作用......

在 shell 脚本中:

result=`grep -wi --color=always 'error|exception' /tmp/log.log | grep -v '<STATUS>ERROR</STATUS>'`
echo $result

【讨论】:

  • 该命令在 cmd 行上运行良好,但在 shell 脚本中却失败了。这就是我的主要查询,如何从 shell 脚本输出管道 grep 的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2016-08-22
相关资源
最近更新 更多