在命令行上使用grep时,当使用%
百分比符号时,得到的结果不同。
我希望此表达式与它匹配,但不返回任何内容:
bash-4.1$ echo ' (in=Gen)' | grep -in '*(*)'
但是,如果我包含一个前导百分比字符,则它是匹配的:
bash-4.1$ echo ' (in=Gen)' | grep -in '%*(*)'
1: (in=Gen)
百分比
%
符号是grep中的特殊字符还是控制字符?看看现有的文件,我看不到任何参考资料。 最佳答案
如果您输入任何其他(有效)字符,也会有匹配项,例如使用,
:
% echo ' (in=Gen)' | grep -in ',*(*)'
1: (in=Gen)
问题在于您的模式
*(*)
,这里是:*
意味着匹配前面的0个或多个标记,因为没有前面的标记与*
字面匹配。由于不存在*
,因此模式与任何内容都不匹配在
%*(*)
时:%*
意味着匹配%
零次或多次,因为不存在%
,grep
不匹配%*
;在这种情况下grep
只匹配最后一次)
关于regex - Grep和%百分比符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41981586/