【发布时间】:2012-07-24 15:56:43
【问题描述】:
有什么区别
grep -isn "String\.format" -R .
和
grep -isn String\.format -R .
当我使用后者时,结果包括String format和String.format,但如果我使用前者,结果只包括String.format。这个结果和使用一样
grep -isn 'String\.format' -R .
谁能解释一下?
【问题讨论】:
有什么区别
grep -isn "String\.format" -R .
和
grep -isn String\.format -R .
当我使用后者时,结果包括String format和String.format,但如果我使用前者,结果只包括String.format。这个结果和使用一样
grep -isn 'String\.format' -R .
谁能解释一下?
【问题讨论】:
没有引号,shell 将\. 解释为.,然后将字符串传递给grep。所以grep 现在有一个正则表达式通配符,因此可以找到任何字符,包括空格。
当您包含引号时,shell 将完整的\. 传递给grep。现在grep 知道它必须搜索句点,而不是通配符。
【讨论】:
",例如'"(转义也可以),您可以通过转义处理',例如\',或用双引号括起来 "'";我建议将任何“可疑”字符括在单引号中,并在您想要它们时简单地转义未加引号的单引号字符。这是简单和可靠的完美结合。
你的 shell 吃掉了反斜杠,所以你必须转义它才能将它传递给grep。
【讨论】: