【发布时间】:2015-11-06 20:51:30
【问题描述】:
我正在尝试在一个大型项目中查找给定字符串的匹配数。目前,要使用ag 执行此操作,我正在使用以下命令:
$ echo 0$(ag -c searchterm | sed -e "s/^.*:/+/") | bc
这显然有点冗长而且不是很直观。有没有更好的方法从ag 获取目录中的匹配总数?我翻阅了文档,找不到任何有用的东西。
编辑:感谢recent commit 到ag,文件名可以用ag 代替sed,所以这也有效:
$ echo `ag test -c --nofilename | sed "s/$/+/"`0 | bc
注意:我意识到我可以用ack -hcl searchterm 来做到这一点(嗯,差不多。在我的具体情况下,我也需要一个--ignore-dir building),但因为这已经是一个大项目(并且将是显着增长),ag 提供的速度提升使其更受欢迎(ack 的搜索大约需要 3 秒,而ag 几乎是即时的结果),所以我想坚持下去。
【问题讨论】:
-
你找到这个问题的答案了吗?
-
@jjaderberg 不完全是。最好的选择似乎是
--stats选项,然后解析出正确的行。 (例如,ag --stats searchterm | tail -n 5 | head -n 1)。我还提交了一个--stats-only选项的拉取请求,该选项可以防止打印任何其他内容,在这种情况下,ag --stats searchterm | head -n 1将获得匹配的数量。在这两种情况下,您仍然需要过滤掉“匹配项”才能获得数字。
标签: full-text-search ag