【问题标题】:What is difference between grep -isn "String\.format" -R . and grep -isn String\.format -R .?grep -isn "String\.format" -R 有什么区别。和 grep -isn String\.format -R .?
【发布时间】:2012-07-24 15:56:43
【问题描述】:

有什么区别

grep -isn "String\.format" -R .

grep -isn String\.format -R .

当我使用后者时,结果包括String formatString.format,但如果我使用前者,结果只包括String.format。这个结果和使用一样

grep -isn 'String\.format' -R .

谁能解释一下?

【问题讨论】:

    标签: linux bash shell grep


    【解决方案1】:

    没有引号,shell\. 解释为.,然后将字符串传递给grep。所以grep 现在有一个正则表达式通配符,因此可以找到任何字符,包括空格。

    当您包含引号时,shell 将完整的\. 传递给grep。现在grep 知道它必须搜索句点,而不是通配符。

    【讨论】:

    • 为什么 bash shell 特别对待 \?它如何处理“”和“”?
    • @VictorS 反斜杠是escape character
    • @VictorS:您通过单引号处理",例如'"(转义也可以),您可以通过转义处理',例如\',或用双引号括起来 "'";我建议将任何“可疑”字符括在单引号中,并在您想要它们时简单地转义未加引号的单引号字符。这是简单和可靠的完美结合。
    【解决方案2】:

    你的 shell 吃掉了反斜杠,所以你必须转义它才能将它传递给grep

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2023-03-18
      • 2013-06-12
      相关资源
      最近更新 更多