【问题标题】:silver_searcher (ag) with multiple search expressions?silver_searcher (ag) 有多个搜索表达式?
【发布时间】:2017-01-11 15:27:13
【问题描述】:

silver_searcher 是否支持在grep 中指定多个搜索表达式,例如-e

我在文档/帮助中找不到任何选项。

【问题讨论】:

    标签: full-text-search ag


    【解决方案1】:

    您可能希望同时使用两个布尔运算符进行搜索:

    • ANDag -l pattern1 | xargs ag -l pattern2 | xargs ag 'pattern1|pattern2'
      • Add -d '\n' 到 xargs 以处理文件名上的空格。
    • ag 'pattern1|pattern2'
    • ag -v 'pattern'

    From manual:

    -l--files-with-matches: 仅打印包含匹配项的文件的名称,而不是匹配的行。空查询将打印所有要搜索的文件。

    -v--invert-match:匹配不包含指定模式的每一行。

    【讨论】:

    • Add -d '\n' to xargs to handle spaces on filenames. 这是一个非常有用的提示。我通常会尝试惹恼-0。如果路径中有括号或 ~ 怎么办?
    【解决方案2】:

    根据文档,它不支持多种搜索模式。也就是说,它确实支持使用并行,因此您可以触发多个 ag 实例进行多重搜索:

    echo "foo\nbar\nbaz" | parallel 'ag --parallel --color "{}" *' 
    

    使用 --parallel 开关的输出将是文件名、行号和匹配项。如果这太花哨了,您可以随时在模式搜索中使用 OR 运算符:

    ag --color "foo|bar|baz" * 
    

    【讨论】:

      【解决方案3】:

      是的,您可以通过用竖线字符 (|) 分隔每个模式来搜索多个模式:

      ag 'pattern1|pattern2'
      

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多