silver_searcher (ag) 具有多个搜索表达式?

问题描述 投票:0回答:3

silver_searcher是否支持指定多个搜索表达式,例如

-e
中的
grep

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

full-text-search ag
3个回答
17
投票

您可能想使用两个布尔运算符进行搜索:

  • ag -l pattern1 | xargs ag -l pattern2 | xargs ag 'pattern1|pattern2'
    • -d '\n'
      添加到 xargs 以处理文件名上的空格。
  • AND:搜索包含 word1 AND word2 的行,例如在 CSV 上:
    ag -G '\.csv$' 'word1.*word2|word2.*word1'
  • ag 'pattern1|pattern2'
  • 不是
    ag -v 'pattern'

来自手册

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

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


9
投票

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

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

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

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

6
投票

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

|
):

ag 'pattern1|pattern2'
© www.soinside.com 2019 - 2024. All rights reserved.