问题标签 [ripgrep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
793 浏览

find - 最佳 GNU 查找替代品

我正在寻找更好的发现。原因是 find 用户界面对我来说不直观(特别是 pruning / -print 样式)并且由于对参数顺序的严格要求而难以包装在函数中。locate / updatedb 不够灵活,无法使用。是否有人愿意分享他们的示例查找包装器或查找替代品(请仅命令行)?

这是我发现不直观的用法的示例:

在选项之前指定目录对我来说很奇怪,并且很容易忘记修剪的语法。(有些程序使用 --exclude 选项代替。)我认识到这是一个挑剔的点。

这是我在不丢失太多功能的情况下指定一些默认值的最佳尝试:

要求对程序中的所有选项有一个完美的理解,以便能够用一些默认值来包装它并且不会失去与普通查找的功能/兼容性,这似乎很愚蠢。

我猜我不会像 GNU 发现的那样标准,但可能会有更好的东西,尽管鲜为人知。

更新(2013-11-26):

  • 在 Itay 的建议下,我使用了ack大约一年。它对我至少 95% 的搜索非常有效。
  • 我最近发现了Ag,它是 ack 的快速版本。在过去的几周里,它一直运行良好。

更新(2014-11-23):

我强烈推荐Ag。它工作得很好。仍然有很多次 Find 是必要的,为此我继续寻找一个不错的替代品。虽然毫无疑问很有用,但在我看来,Find 的界面非常过时并且不必要地困难。

更新(2017-08-04):

我现在最强烈推荐ripgrep作为不可或缺的 Ag 替代品。这是一个非常新的工具,但它对 .gitignore 文件的支持大大超过了 Ag 并且在所有其他方面它是等效的或更好的。我继续寻找 Find 替代品。

更新(2021-11-28):

我继续使用并喜欢满足我大部分需求的ripgrep 。对于其他一切,我混合使用 find 和fd

0 投票
1 回答
901 浏览

utf-8 - Emacs 中的 rgrep 使用 ripgrep

我们如何自定义 Emacs 的 rgrep 以使用 ripgrep(rg 可执行文件)——使其同时在拉丁语 1、UTF-8 和 UTF-16 中搜索?

这个想法是重用 Emacs 的标准 rgrep 命令,这样我们也可以使用 next-error 和 previous-error ...

我看不到如何完全集成(对于基本目录)和(对于匹配的文件)说明符等。

将产生(在 *.txt 文件中搜索时)

0 投票
1 回答
1065 浏览

grep - Silversearcher/ack vs find,grep

目前,当我必须在代码中搜索复杂的模式时,我通常使用 find 和 grep 的组合形式:

虽然这看起来很长,但如果你使用 zsh,它实际上很短。我只需键入 f(第一个字符),然后从我的命令历史记录中直接转到此命令。此外,find/grep 中的正则表达式经过标准化和测试,因此不会出现意外或丢失搜索。

ripgrep/ag 等是新软件,当最初的维护者失去兴趣时,几年后可能不会支持。

  1. 是否有任何计划在 grep/其他版本的 grep 中的 ag/ack/rg 中包含 .gitignore 规则或优化?这些优化是否会/不会包含在 grep 中?

  2. 对于那些转换的人:你们觉得转换到 rg/ag/ack 是否值得,特别是因为这些工具也会有一个学习曲线?

0 投票
1 回答
100 浏览

bash - ag 和 rg 没有列出以下划线开头的文件,find 没有

如果我做:


接着:

或者

我得到0匹配结果。


现在,如果我做一个touch gandaf我得到1匹配。

这是为什么?以下划线开头的文件是否具有与隐藏文件类似的行为?也许是mac的文件系统上的东西?如标题中所述,如果我替换 ag/rg 因为find .它按预期工作。

0 投票
1 回答
2214 浏览

ripgrep - 使用 ripgrep 搜索单词的开头/结尾

grep可以搜索单词的开头和结尾

这会找到I have a leg.但不是play allegro here

Ripgrep (0.10.0) 似乎不支持这种写这个正则表达式的方式。因此,我的问题是:

如何在单词的开头/结尾“grep”出现ripgrep

0 投票
2 回答
2883 浏览

vim - 管道 ripgrep 搜索结果到 vim 并在确切的搜索位置打开文件

用搜索词填充 vim,但我需要再次搜索它们,这次是在 vim 中。

如何将 ripgrep 搜索结果通过管道传输到 vim,以便搜索到的文件将在确切的搜索位置(行和列)打开?

0 投票
1 回答
249 浏览

regex - Regex if then without else in ripgrep

如果满足某些条件,我正在尝试匹配一堆 python 脚本中的一些方法。我要查看的第一件事是import re文件中是否存在,如果存在,则查找re.sub(something). 我尝试按照此处的文档了解如何在没有其他正则表达式的情况下使用 if then,但似乎无法使其与 ripgrep 一起使用或不使用 pcre2。

我的下一个方法是使用组,所以rg -n "(^import.+re)|(re\.sub.+)" -r '$2',但是这种方法的问题是,因为第一个导入组匹配,我在输出中得到了很多空文件。$2正在正确处理。

我希望避免进行一次或组捕获,并尽可能使用正则表达式。

总而言之,我希望的是,如果import re出现在文件中的任何位置,则re\.sub.+使用ripgrep. 使用 ripgrep 是一个硬依赖。

一些示例代码:

0 投票
1 回答
648 浏览

regex - Ripgrep 缺少字符类 + 重复

为什么这些匹配:

但这不会:

我的印象是 ripgrep 使用 rust regex 引擎,应该可以处理字符类+重复?

0 投票
2 回答
232 浏览

regex - 正则表达式使用反向引用匹配所有出现

我正在尝试使用反向引用来匹配所有使用启用选项实例化的导入类的ripgrep出现--pcre2

首先,我想查看是否正在导入一个类,然后返回引用该类以查找它的实例化位置。

  • 第一次尝试:匹配第一次出现的new ExifInterface(str) 我的正则表达式是:(import.+(ExifInterface)).+(new\s\2\(.+\))

  • 第二次尝试:匹配最后一次出现的new ExifInterface(str). 我的正则表达式是(import.+(ExifInterface)).+(?:.+?(new\s\2\(.+\)))

我的ripgrep命令是rg --pcre2 --multiline-dotall -U "(import.+(ExifInterface)).+(new\s\2\(.+?\))" -r '$3' -o

问题。我怎样才能匹配所有的出现new ExifInterface(str)

奖励问题:在某些情况下,我从 得到一个PCRE2: error matching: match limit exceeded标准错误rg,但不知道为什么。文档长度只有 161 行。

链接到正则表达式101

考虑以下数据样本:

0 投票
1 回答
491 浏览

shell - 如何在 Ubuntu 中使用 ripgrep 搜索 CSV 文件中的行

我的主目录中有一个 csv 文件,如下所示

我可以使用grep命令来提取包含单词'abs'的行:

ripgrep但是我在https://blog.burntsushi.net/ripgrep/中遇到过它声称具有类似的功能grep但执行速度更快(我的实际 csv 文件非常大,大小为 30gb,所以我需要一些比 更快的方法grep

所以我安装ripgrepcargo install ripgrep运行以下代码

但我得到以下错误

任何以正确方式使用 ripgrep 的指针都会有所帮助