在命令行上使用 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)
问题在于您的模式,*(*)
,此处:
*
表示匹配零个或多个前面的标记,因为没有前面的标记,它可以字面匹配*
。由于不存在*
,因此该模式不匹配任何内容
在 %*(*)
中:
%*
表示匹配%
零次或多次,因为没有%
存在,grep
与%*
不匹配;在这种情况下grep
仅匹配最后一个)
关于regex - Grep 和 % 百分比符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41981586/