Home

(译)搜索工具的功能比较

返回

原文 | Github 存储库 |

ack,ag,git-grep,GNU grep 和 ripgrep 的功能比较

如果您对图表有更新,请提交一个 issue

如果您发现此图表有用,请考虑为您运行的项目制作一个,即使它包含”竞争”项目。最好的项目可能不是你的项目,而这并没有错.

工具 ack ag git grep GNU grep rg
名称 ack 银色搜索者(The Silver Searcher) git grep GNU grep ripgrep
项目页面 https://beyondgrep.com https://geoff.greer.fm/ag/ https://git-scm.com/docs/git-grep https://www.gnu.org/software/grep/ https://github.com/BurntSushi/ripgrep
语言 Perl C C C
许可 艺术许可证 2.0 Apache License 2.0 GPL 2 GPL 3 MIT /授予许可
正则表达式 原生 Perl Perl 兼容 可选择三种模式:基本,扩展或 Perl 兼容 可选择三种模式:基本,扩展或 Perl 兼容(实验) 非回溯,主要是 Perl 兼容.看到https://docs.rs/regex
特征 ack ag git grep GNU grep rg
搜索哪里 随地 随地 默认情况下使用 git 存储库,或者使用–no-index 随地 随地
搜索 git 历史记录
按文件类型,包含/排除文件
按文件扩展名,指定文件类型
通过文件名匹配,指定文件类型
通过匹配模式在文件的第一行,
指定文件类型
配置文件 系统级,用户级和项目级 系统级,用户级和项目级
忽略基于.gitignore 或.ignore 文件的文件
并发 使用线程
确定性输出 ✔,使用–sort-files ✔,使用–sort-files
跨换行符,匹配模式
智能案例搜索
具有布尔表达式的多个模式
按编号打印行
显示与其他匹配的匹配距离 ✔,在 ack 3
根据匹配组,为每一行构建输出
限制输出行的长度
下划线 匹配项 ,展示 w/o 颜色
搜寻 gzip 文件
Searching ack ag git-grep GNU grep rg
忽略大小写 -i --ignore-case
智能大小写 搜索 (无论大小,除非模式包括了一个大写字母) -S --smart-case -S --smart-case -S --smart-case
启用 区分大小写(最优级) -I -s --case-sensitive --no-ignore-case -s --case-sensitive
匹配 全 字 -w --word-regexp
倒置 匹配 -v --invert-match
仅匹配整行 -x --line-regexp -x --line-regexp
明确指定模式 --match -e -e --regexp -e --regexp
从文件中,读取匹配模式 -f -f --file -f --file
使用布尔表达式指定多个模式 --and --or --not --all-match
跨换行符,匹配模式 --[no-]multiline
按编号打印特定行 --lines
正则表达式 ack ag git grep GNU grep rg
使用固定字符串,而不是正则表达式进行文字匹配 -Q --literal -Q --literal -F --fixed-strings -F --fixed-strings -F --fixed-strings --fixed-regexp -F --fixed-strings
使用基本正则表达式 -G --basic-regexp -G --basic-regexp
使用扩展的正则表达式 -E --extended-regexp -E --extended-regexp
使用 Perl(或 Perl 兼容)正则表达式 总是 -P --perl-regexp -P --perl-regexp (experimental)
搜索输出 ack ag git grep GNU grep rg
仅打印包含匹配项的文件名 -l --files-with-matches
仅打印不包含匹配项的文件名 -L --files-without-match -L --files-without-match -L --files-without-match -L --files-without-match --files-without-match
仅显示匹配的行的一部分 -o -o --only-matching -o --only-matching -o --only-matching
为每个行匹配指定输出 --output -r --replace
打印每个匹配的文件名 -H --with-filename --[no-]filename -H -H --with-filename -H --with-filename
在输出上,抑制前缀文件名 -h --no-filename --no-filename -h -h --no-filename --no-filename
打印相对于项目顶级目录的路径 --full-name
将行号前缀为匹配行 --[no-]numbers -n --line-number -n --line-number -n --line-number
抑制行号 --no-numbers --no-line-number -N --no-line-number
在匹配之前,打印每个文件名称的标题 --[no-]heading -H --[no-]heading --[no-]heading --[no-]heading
指定要在 STDIN 上,显示匹配项的文件名 --label
显示第一个匹配的列号 --[no-]column --column --column
匹配后,打印上下文行 -A --after
在匹配前,打印上下文行 -B --before
在匹配前后,打印上下文行 -C --context
显示每个文件匹配的行数 -c --count
打印空字节作为文件名之间的分隔符 --print0 -0 --null --print0 -z --null -Z --null -0 --null
NUM 匹配后停止在每个文件中搜索 -m --max-count -m --max-count -m --max-count -m --max-count
在任何一场匹配后,停止搜索 -1
在每行之前,打印文件中的字节偏移量 -b --byte-offset -u --unix-byte-offsets
禁止有关不存在或不可读文件的错误消息 -s --silent -s --no-messages --no-messages
限制输出线的长度 -W --width -M --max-columns
不要输出匹配的行 -q --quiet -q --quiet --silent -q --quiet
打印统计数据(扫描的文件,拍摄的时间等) --stats --stats-only
文件演示 ack ag git grep GNU grep rg
启用颜色输出 --color
下划线匹配 --underline
设置各种输出项目的颜色 --color-match --color-filename --color-lineno --color-colno --color-match --color-path --color-line-number 在.gitconfig 文件中指定 在 GREP_COLORS 环境变量中指定 --colors
通过 pager 或其他命令输出管道 --[no-]pager -O --open-files-in-pager
除非它们在相邻的行上,否则将匹配输出用空行分开 --[no-]proximate
将所有匹配组合在一个文件中 --[no-]group --[no-]group
指定组分隔符 --[no-]group-separator
显示匹配的函数名称 -p --show-function
显示找到匹配项的函数 -W --function-context
在不同文件的结果之间打印分隔符 --[no-]break --[no-]break
每行都冲洗下输出 --flush
文件查找 ack ag git grep GNU grep rg
仅打印所选文件,而不进行搜索 -f --files
显示每个文件的类型 --show-types
列出与模式匹配的可搜索文件 -g -g
阅读要从 FILE 中搜索的文件列表 --files-from
词法排序找到的文件 --sort-files --sort-files
阅读要从 STDIN 搜索的文件列表 -x
将搜索限制为与模式匹配的文件名 -G --file-search-regex
搜索隐藏文件 --hidden --hidden
文件包含/排除 ack ag git grep GNU grep rg
仅搜索给定类型的文件 --type=X --X (where X is a filetype) --X (where X is a filetype) -t --type
排除给定类型的文件 --type=noX --noX (where X is a filetype) -T --type-not
递归到子目录 -r -R --[no-]recurse -r --recurse -r --recursive
按照符号链接递归到子目录 -R --dereference-recursive
没有下降到子目录 -n --no-recurse -n --norecurse
从被忽略的目录列表中添加/删除目录 --[no-]ignore-dir --ignore-dir
不要忽视忽略文件(.gitignore,.ignore 等) --no-ignore --no-ignore-parent --no-ignore-vcs
忽略大于给定大小的文件 `–max-文件大小
指定要搜索的文件 --include -g --glob --iglob
忽略匹配的文件/目录 --ignore --exclude --exclude-from --exclude-dir --ignore-file
添加用于忽略文件的过滤器 --ignore-file
仅包括 ack 识别的类型的文件 -k --known-types
跟随符号链接 --[no-]follow -f --follow -L --follow
不要关注其他设备的链接 --one-device --devices=skip
搜索所有类型的文件 -a --all-types
限制目录搜索深度 --depth --max-depth --maxdepth
搜索二进制文件 --binary
将文件视为二进制 -U --binary
不要搜索二进制文件 -I
将二进制文件视为文本 -a --text -a --text
搜索所有文本文件 -t --all-text
搜索所有文件 -u --unrestricted -u --unrestricted
跳过 VCS 中的规则忽略文件(.gitignore,.hgignore 等) -U --skip-vcs-ignores
文件类型规范 ack ag git grep GNU grep rg
创建文件类型,替换以前的规范 --type-set
将规范添加到现有文件类型 --type-add --type-add
删除文件类型 --type-del --type-clear
忽略默认类型定义 --ignore-ack-defaults
显示所有已知类型 --help-types --list-file-types --type-list
ack ag git grep GNU grep rg
打印所有行,无论是否匹配 --passthru --passthrough
输出默认的 ackrc ,以进行自定义到标准输出 --create-ackrc
转储有关加载哪些选项的信息 --dump
指定要使用的配置文件 --ackrc
忽略环境变量和全局配置文件 --env
将标准输入视为管道 --[no-]filter
搜索压缩文件的内容(例如 gzip) -z --search-zip
指定输入文件编码 -E --encoding