问题标签 [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.
find - 最佳 GNU 查找替代品
我正在寻找更好的发现。原因是 find 用户界面对我来说不直观(特别是 pruning / -print 样式)并且由于对参数顺序的严格要求而难以包装在函数中。locate / updatedb 不够灵活,无法使用。是否有人愿意分享他们的示例查找包装器或查找替代品(请仅命令行)?
这是我发现不直观的用法的示例:
在选项之前指定目录对我来说很奇怪,并且很容易忘记修剪的语法。(有些程序使用 --exclude 选项代替。)我认识到这是一个挑剔的点。
这是我在不丢失太多功能的情况下指定一些默认值的最佳尝试:
要求对程序中的所有选项有一个完美的理解,以便能够用一些默认值来包装它并且不会失去与普通查找的功能/兼容性,这似乎很愚蠢。
我猜我不会像 GNU 发现的那样标准,但可能会有更好的东西,尽管鲜为人知。
更新(2013-11-26):
更新(2014-11-23):
我强烈推荐Ag。它工作得很好。仍然有很多次 Find 是必要的,为此我继续寻找一个不错的替代品。虽然毫无疑问很有用,但在我看来,Find 的界面非常过时并且不必要地困难。
更新(2017-08-04):
我现在最强烈推荐ripgrep作为不可或缺的 Ag 替代品。这是一个非常新的工具,但它对 .gitignore 文件的支持大大超过了 Ag 并且在所有其他方面它是等效的或更好的。我继续寻找 Find 替代品。
更新(2021-11-28):
utf-8 - Emacs 中的 rgrep 使用 ripgrep
我们如何自定义 Emacs 的 rgrep 以使用 ripgrep(rg 可执行文件)——使其同时在拉丁语 1、UTF-8 和 UTF-16 中搜索?
这个想法是重用 Emacs 的标准 rgrep 命令,这样我们也可以使用 next-error 和 previous-error ...
我看不到如何完全集成(对于基本目录)和(对于匹配的文件)说明符等。
将产生(在 *.txt 文件中搜索时)
grep - Silversearcher/ack vs find,grep
目前,当我必须在代码中搜索复杂的模式时,我通常使用 find 和 grep 的组合形式:
虽然这看起来很长,但如果你使用 zsh,它实际上很短。我只需键入 f(第一个字符),然后从我的命令历史记录中直接转到此命令。此外,find/grep 中的正则表达式经过标准化和测试,因此不会出现意外或丢失搜索。
ripgrep/ag 等是新软件,当最初的维护者失去兴趣时,几年后可能不会支持。
是否有任何计划在 grep/其他版本的 grep 中的 ag/ack/rg 中包含 .gitignore 规则或优化?这些优化是否会/不会包含在 grep 中?
对于那些转换的人:你们觉得转换到 rg/ag/ack 是否值得,特别是因为这些工具也会有一个学习曲线?
bash - ag 和 rg 没有列出以下划线开头的文件,find 没有
如果我做:
接着:
或者
我得到0
匹配结果。
现在,如果我做一个touch gandaf
我得到1
匹配。
这是为什么?以下划线开头的文件是否具有与隐藏文件类似的行为?也许是mac的文件系统上的东西?如标题中所述,如果我替换 ag/rg 因为find .
它按预期工作。
ripgrep - 使用 ripgrep 搜索单词的开头/结尾
我grep
可以搜索单词的开头和结尾
这会找到I have a leg.
但不是play allegro here
。
Ripgrep (0.10.0) 似乎不支持这种写这个正则表达式的方式。因此,我的问题是:
如何在单词的开头/结尾“grep”出现ripgrep
?
vim - 管道 ripgrep 搜索结果到 vim 并在确切的搜索位置打开文件
用搜索词填充 vim,但我需要再次搜索它们,这次是在 vim 中。
如何将 ripgrep 搜索结果通过管道传输到 vim,以便搜索到的文件将在确切的搜索位置(行和列)打开?
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 是一个硬依赖。
一些示例代码:
regex - Ripgrep 缺少字符类 + 重复
为什么这些匹配:
但这不会:
我的印象是 ripgrep 使用 rust regex 引擎,应该可以处理字符类+重复?
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 行。
考虑以下数据样本:
shell - 如何在 Ubuntu 中使用 ripgrep 搜索 CSV 文件中的行
我的主目录中有一个 csv 文件,如下所示
我可以使用grep
命令来提取包含单词'abs'的行:
ripgrep
但是我在https://blog.burntsushi.net/ripgrep/中遇到过它声称具有类似的功能grep
但执行速度更快(我的实际 csv 文件非常大,大小为 30gb,所以我需要一些比 更快的方法grep
)
所以我安装ripgrep
并cargo install ripgrep
运行以下代码
但我得到以下错误
任何以正确方式使用 ripgrep 的指针都会有所帮助