我正在尝试运行涉及正则表达式的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"
以便|
不被视为管道?
答案 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
也可能是偏好。