在命令行上使用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/

10-16 23:52