在远程主机上使用ssh执行涉及`|`的grep正则表达式

时间:2014-07-22 07:26:58

标签: bash ssh grep

我正在尝试运行涉及正则表达式的grep命令' |'在使用ssh的服务器上。

ssh rpatil@192.168.1.5 grep -E "GapEvent|GapFilled" "$logFile" > $server-$testName.log

命令中的'|'现在被视为管道并且正在引发错误"no command GapFilled"

我尝试了'GapEvent|GapFilled''(GapEvent|GapFilled)'

那么应该如何编写正则表达式"GapEvent|GapFilled"以便|不被视为管道?

3 个答案:

答案 0 :(得分:2)

您需要两个级别的引号,因为命令行被评估两次(执行ssh时本地执行一次,而远程执行grep时执行一次)。您可以使用以下模式之一:

  "'a|b'"
  '"a|b"'
  "\"a|b\""

答案 1 :(得分:1)

逃离|这样的\|

grep -E "GapEvent\|GapFilled" "$logFile" file

答案 2 :(得分:1)

只需使用两个表达式:

grep -E -e "GapEvent" -e "GapFilled" "$logFile"
此处可能不再需要

-E-F也可能是偏好。