Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 想要一个正则表达式脚本,它只能找到一个变量,后跟'=';;但不是'==';_Shell_Grep - Fatal编程技术网

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

Shell 想要一个正则表达式脚本,它只能找到一个变量,后跟'=';;但不是'==';,shell,grep,Shell,Grep,例如: 我想用grep表示“variable.*=” 但我也得到了如下结果: “变量==” 那么,grep怎么可能只针对后跟等号('=')的变量,而不针对“相等检查运算符”('=')。可能有点过分,但您可以使用grep-p.*(?假设您不希望变量=在一行末尾,那么下面的正则表达式将执行您想要的操作。它是=后跟[^=](即任何不是=的东西) 我使用了*跳过空格。您使用的*将跳过任何内容,因此您将匹配变量2= 或者,您可以使用\s跳过所有空格,但我认为在这种情况下,跳过空格可能就是您想要的 grep

例如:

我想用grep表示“variable.*=”

但我也得到了如下结果:

“变量==”


那么,grep怎么可能只针对后跟等号('=')的变量,而不针对“相等检查运算符”('=')。

可能有点过分,但您可以使用
grep-p.*(?假设您不希望
变量=
在一行末尾,那么下面的正则表达式将执行您想要的操作。它是
=
后跟
[^=]
(即任何不是
=
的东西)

我使用了
*
跳过空格。您使用的
*
将跳过任何内容,因此您将匹配
变量2=

或者,您可以使用
\s
跳过所有空格,但我认为在这种情况下,跳过空格可能就是您想要的

grep 'variable *=[^=]'

我试图想出一些办法,并想出了这个
grep'变量[^=]*=$\\124;变量[^=]*=[^=]'
,只是为了确保
variable[^=]*=
在这一特殊情况的末尾。要处理行末尾的
变量=
,可以使用“extended”带有grep的正则表达式,并使用
$
来指示行的结尾:
grep-E'变量*=([^=]|$)'
我刚刚注意到-P在FreeBSD上不可用,仅供参考;)
grep 'variable[^=]*=$\|variable[^=]*=[^=]'