想要一个正则表达式脚本,它只会找到一个变量后跟'=';但不是'=='

时间:2015-06-24 02:13:06

标签: shell grep

示例:

我想要grep“变量。* =”

但我也得到了结果:

“variable ==”

那么,如何只为变量后跟等于符号('='),而不是等号检查操作符('==')。

3 个答案:

答案 0 :(得分:1)

可能有点矫枉过正,但您可以使用grep -P '.*(?<!=)=(?!=).*'。 它将与variable=x匹配,但不会与variable==x匹配。它使用负面的lookbehind和lookahead来实现这一点。

答案 1 :(得分:1)

假设您在一行结尾处没有预料到variable =,那么下面的正则表达式将会执行您想要的操作。它的=后跟[^=](即任何不是=的内容。)

我已使用<space>*跳过空格。您使用的.*会跳过任何内容,因此您将匹配variable2 =

或者你可以使用\s来跳过所有空格,但我认为在这种情况下你可能只想跳过空格。

grep 'variable *=[^=]'

答案 2 :(得分:0)

grep 'variable[^=]*=$\|variable[^=]*=[^=]'