我想要找到一个大型项目中给定字符串的匹配数量。目前,为了使用ag
完成这个任务,我正在使用以下命令:
$ echo 0$(ag -c searchterm | sed -e "s/^.*:/+/") | bc
有一个明显有些冗长且不是很直观的方法,可以有更好的方式从ag
中获取目录中匹配项的总数吗?我已经查阅了文档,但没有找到有帮助的信息。
编辑:由于对ag
的最近提交,文件名现在也可以使用ag
而不是sed
进行剥离,因此这个方法也可以:
$ echo `ag test -c --nofilename | sed "s/$/+/"`0 | bc
注意:我意识到可以使用ack -hcl搜索项
来实现这一点(嗯,几乎是这样的。在我具体的情况下,我还需要一个--ignore-dir building
),但由于这已经是一个大项目(而且将会大幅增长),所以ag
提供的速度提升使其更可取(对于我的搜索,ack
需要约3秒,而ag
几乎瞬间返回结果),因此我想坚持使用它。
--stats
选项,然后解析出正确的行。(例如,ag --stats searchterm | tail -n 5 | head -n 1
)。我还提交了一个拉取请求,添加了一个--stats-only
选项,可以防止打印任何其他内容,在这种情况下,ag --stats searchterm | head -n 1
将获得匹配数。在这两种情况下,您仍需要过滤掉“ matches”以获取数字。 - SnoringFrog