比grep更好用的搜索工具ag介绍

介绍The Silver Searcher是一个代码快速搜索工具,命令是ag。

可以自动忽略.gitignore、.hgignore文件中的设置。这对于芯片工程师和程序员来说是非常友好的,因为90%的项目都采用了git、svn、hg等版本管理工具。万一不兴没有采用版本管理工具,你一样可以手动建立一个.ignore文件。

相比grep,ag的命令参数更简洁,且执行速度快N倍。快的原因是ag利用了多核CPU,并行搜索。并且还有其它多项优化措施,如内存、正则等。

安装方法1、如果电脑可以连网,可以直接通过dnf、yum、apt-get等命令直接安装。

2、下载编译好的二进制文件:https://github.com/JFLarvoire/the_silver_searcher/releases

3、如果电脑不能连网,可以从github(https://github.com/JFLarvoire/the_silver_searcher)下载源码,编译安装。以centos为例:

yum install pcre-devel xz-devel zlib-devel

cd xxx

./build.sh

make

make install

4、RHEL7/Centos7的ag也可以从这里直接下载:ag2.1.0.tar.gz,解压后加path里即可使用。

使用方法简单pattern模式

# 默认不需要加双引号,忽略大小写

ag output *.v

# 不忽略大小写用 -s

ag -s output *.v

# 当pattern中含大写字母,也会自动取消忽略大小写,下面的例子仅配置大写的OUTPUT

ag OUTPUT *.v

# 反向匹配

ag -v outout *.v

正则模式

# 仅配置output在一行末尾的情况

ag output$ *.v

# 为避免`\`被转义,pattern用双引号或单引号括起来

ag "^\s*Signal" *.v

# 同时搜多个关键字(处于不同行),以下正则找出所有端口定义行

ag "(input|output|inout)" *.v

其他常用option

# 包括.gitignore

ag -u output .

# 搜索软链接

ag -f output .

# 只显示匹配的文件名

ag -l output .

# 只显示不配置的文件名

ag -L output .

# 查找文件名,代替find . -name "xxx"

ag -g sdf .

# 显示每个文件内配置到多少次

ag -c output .

# 配置行前后多显示几行

ag -A 2 -B 3 output .

# 与find、xargs配合,只搜索sim.log

find . -name "sim.log" | xargs ag fail

# 把color关掉,也可以与xargs配合

ag --nocolor -g "/sim.log" | xargs ag fail

人气较高的同类工具ack:https://github.com/beyondgrep/ack3ripgrep:https://github.com/BurntSushi/ripgrep