我试图在一个大型项目中查找给定字符串的匹配数。当前,要使用ag为此,我正在使用以下命令:

$ echo 0$(ag -c searchterm | sed -e "s/^.*:/+/") | bc


这显然有点冗长,而且不是很直观。是否有更好的方法从ag获取目录中的匹配总数?我已经仔细阅读了文档,但找不到任何有用的信息。

编辑:由于对agrecent commit,可以用ag代替sed剥离文件名,因此这也可以:

$ echo `ag test -c --nofilename | sed "s/$/+/"`0 | bc


注意:我知道我可以使用ack -hcl searchterm来做到这一点(嗯,几乎。在我的特定情况下,我也需要在其中添加--ignore-dir building),但是由于这已经是一个大项目(并且将会有很大的发展) ,ag提供的速度提升使其更为可取(ack大约需要3秒的时间,而ag几乎是瞬时的结果),所以我要坚持下去。

最佳答案

我用ag本身来匹配统计数据。例如。:

 >$ ag --stats --java -c 'searchstring' | ag '.*matches'
 >$ 22 matches
 >$ 6 files contained matches


提前过滤以仅打印匹配项数:

 >$ ag --stats --java -c 'searchstring' | ag -o '^[0-9]+(?=\smatches)'
 >$ 22

关于full-text-search - 用ag计算目录中的匹配总数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31995820/

10-12 17:23