4

有 84 个 PATTERN 需要检查,我将它们存储在文件名pattern.txt中。

silver-searcher (也称为 Ag)是否能够从pattern.txt获得这些模式?

grep 具有-f从文件中读取模式的选项,但 silver-searcher 的手册页没有提及它。

4

2 回答 2

2

不,ag 中没有类似的 -f 选项。简单的方法是使用循环将模式传递给 ag;例如,您可以使用 while 循环来读取这样的模式:

while read pattern; do ag "$pattern" -G '.*.txt' ; done < patterns.txt

我建议使用 GNU 与 ag 并行的更快方法。Parallel 和 ag 可以很好地协同工作:

< patterns.txt | parallel 'ag --filename --parallel --color "{}" '

在这里,我将每个模式传递给并行,这反过来会产生许多搜索自己的模式匹配的 ag 进程。Parallel 在启动多少进程方面有点聪明,但您可以根据自己的喜好对其进行调整(https://www.gnu.org/software/parallel/man.html)。简而言之,您将通过并行化更快地完成 84 种模式。

于 2017-01-29T21:59:49.650 回答
1

加入模式文件中的行以创建正则表达式组:

ag  "($(paste -sd "|" pattern.txt))" .
于 2018-08-14T17:56:14.387 回答