【问题标题】:How to find all files containing specific text (which includes a backslash)?如何查找包含特定文本(包括反斜杠)的所有文件?
【发布时间】:2016-10-05 15:46:55
【问题描述】:

我以为我找到了How do I find all files containing specific text on Linux? 的完美答案,所以我试了一下:

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/' -e "Concrete\Core\Block\BlockController"
[Michael@devserver ~]$

没有表演,但我知道应该有一场比赛。

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/concrete/blocks/html' -e "BlockController"
/var/www/concrete5.7.5.9/concrete/blocks/html/controller.php:5:use \Concrete\Core\Block\BlockController;
/var/www/concrete5.7.5.9/concrete/blocks/html/controller.php:7:class Controller extends BlockController
[Michael@devserver ~]$

我也尝试转义反斜杠无济于事。

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/' -e "Concrete\\Core\\Block\\BlockController"
[Michael@devserver ~]$

也试过单引号无济于事。

[Michael@devserver ~]$ grep -rnw '/var/www/concrete5.7.5.9/' -e 'Concrete\Core\Block\BlockController'
[Michael@devserver ~]$

如何在 Linux 上查找包含包含反斜杠的特定文本的所有文件?

【问题讨论】:

    标签: linux text grep find escaping


    【解决方案1】:

    使用单引号并转义反斜杠。

    grep -rnw '/var/www/concrete5.7.5.9/' -e'Concrete\\Core\\Block\\BlockController'
    

    【讨论】:

    • 是的,这也是我发现的。 -e 有什么作用?谢谢
    • -e 采用正则表达式模式,反斜杠是正则表达式中的转义字符,因此您必须放置 2 个反斜杠才能转义反斜杠,如果使用双引号,则必须使用 4 个反斜杠,因为反斜杠是bash 中的 scape 字符也是如此。
    【解决方案2】:

    使用单引号。

    grep -rnw '/var/www/concrete5.7.5.9/' -e 'Concrete\Core\Block\BlockController'
    

    【讨论】:

    • 已经试过了,但是不行。但后来我更进一步,尝试使用单引号并用另一个反斜杠转义反斜杠!也许应该更新您的答案?谢谢!
    • 想了想,懒得查了。
    • 事实证明它们是必需的。让我难过的是我必须从双引号更改为单引号并避开反斜杠。我尝试了每个,但不是同时:(
    【解决方案3】:

    Grep 有一个选项 -F 来解释模式的字面意思,而不是正则表达式。例如:

    $ cat infile
    use \Concrete\Core\Block\BlockController;
    class Controller extends BlockController
    $ grep 'Concrete\Core\Block\BlockController' infile     # No match!
    $ grep -F 'Concrete\Core\Block\BlockController' infile  # Matches!
    use \Concrete\Core\Block\BlockController;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 1970-01-01
      • 2019-06-26
      相关资源
      最近更新 更多