银搜索者能从文件中获取PATTERN吗?

时间:2017-01-20 09:25:09

标签: command-line grep ag

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

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

grep有-f个选项可以从文件中读取模式,但是银色搜索者的手册页没有提及它。

2 个答案:

答案 0 :(得分:3)

不,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进程。并行对于启动多少进程有点聪明,但您可以根据内容调整它(https://www.gnu.org/software/parallel/man.html)。简而言之,通过并行化,您可以更快地完成84个模式。

答案 1 :(得分:0)

在模式文件中加入各行以创建一个正则表达式组:

ag  "($(paste -sd "|" pattern.txt))" .