问题标签 [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.
wildcard - 如何使用 RIPGREP 使用通配符进行搜索
使用 ripgrep 在我的文件中查找内容时,我无法使用通配符作为单词。欢迎任何帮助。
具体情况:查找任何以GHJA开头的单词,任何后缀如GHJA129387 GHJA0938094等(可以是字母或数字)。
我尝试使用 GHJA*,但没有奏效。
search - ripgrep 查找包含多个单词的文件,可能在不同的行?
如果我有如下文件:
是否有关于 ripgrep(或类似)的命令将搜索例如包含 foo 和 bar 的文件?例如,它会显示 file1.txt 而不是其他两个文件?(注意 foo 和 bar 可能不在同一行。)
然后第二个问题,为了更花哨,我可以使用一些语法来计算带有 foo 的文件,但如果它们也包含 bar,则排除它们?所以例如它只会显示file2.txt?
谢谢!
neovim - 如何保留搜索窗口?
免责声明:我不知道这里所有正确的术语。当我说“窗口”时,它可能是“快速修复模式对话框”之类的。
我正在使用 Neovim(通过 Neovide)并具有这些设置以通过 fzf 插件通过 ripgrep 启用搜索:
在我的环境变量中,我FZF_DEFAULT_COMMAND
设置为:
当我执行类似的操作时:Rg fn
,会出现一个如下所示的弹出窗口:
这就是问题所在:当我输入其中一行以关闭窗口并转到目标文件进行更改时,我想在完成后恢复搜索窗口。
我可以点击:
然后向上箭头以重新运行搜索,但这可能很烦人,尤其是当有很多结果并且我想将光标保持在上次停止的位置时。当我尝试:copen
它只是空的。
有没有办法在窗口中重新打开最后一次搜索,保留状态?(我知道如果我更改某些内容,搜索结果将会过时......没关系)
除了具体问题 - 对于来自 VSCode 等 GUI 编辑器的人,我会很感激在 Neovim UI 中使用搜索的提示。
谢谢!
bash - 如何从源文件列表中迭代并在我的磁盘驱动器上找到这些文件?我正在使用 FD 和 RIPGREP
我有一个非常长的文件列表,存储在我想在我的驱动器上找到的文本文件(missing-files.txt)中。这些文件分散在我驱动器的不同文件夹中。我想获得任何可以找到的最接近的可用。
丢失文件.txt
这是我的工作 bash 代码:
我的 bash 代码中发生了什么:
- 我从我的文件列表中迭代
- 我使用FD ( https://github.com/sharkdp/fd ) 命令在我的驱动器中找到这些文件
- 然后我将它传送到RIPGREP ( https://github.com/BurntSushi/ripgrep ) 以过滤结果并找到最接近的匹配项。我正在寻找的匹配应该匹配相同的文件和文件夹结构。我只限制一个结果。
- 然后最后将其存储在另一个文本文件中,稍后我可以评估列表以进行下一步
我需要帮助的地方:
- 这是最有效的方法吗?我有超过 2,000 个文件需要查找。我对其他解决方案持开放态度,这是我刚刚划分的。
- 由于某种原因,我的编码坏了,它停止将结果返回到“collected-results.txt”。我的猜测是它在FD命令之后的第二个管道中的某个地方坏了。我没有设置任何条件以防它遇到错误或找不到文件,所以我很难确定。
附加信息:
- 我正在使用 Mac,并在 Catalina 上运行
- 显然这不是我的专业领域
regex - 加载时出现慢性 ripgrep / vim 插件错误:“-complete Used without -nargs”?
我最近将ripgrep添加到我的vim 插件列表中,并且在安装后立即开始在我加载 vim 时收到此错误消息:
打开有问题的文件并查看第 148-149 行会发现:
我在这里完全没有我的深度,特别是考虑到这个错误是通过简单地安装插件产生的;我对基础文件 ( vim-ripgrep.vim
) 进行了 0 次更改。
有没有人在安装 ripgrep 后遇到过类似的慢性错误,如果有,您是如何解决的?
python - 在bash和子进程上运行时python不同的输出
我正在运行一个脚本,它在内部调用一个 bash 命令并相应地解析输出。例如我正在调用这个命令
我得到这个输出没有任何行号或任何东西
如果我在 bash 中运行相同的命令,我会得到不同的结果
知道为什么会发生这种情况以及我们如何解决这个问题。谢谢
python - 仅带有文件名的 Grep 摘要
我试图找出一种方法来总结 grep 结果并使用文件名而不是每一行显示结果。我知道 ripgrep 有这个功能。我浏览了 grep 手册页,但找不到类似的东西。
我有一个处理 ripgrep 结果的 python 脚本。如果我能得到类似的结果,希望为 grep 重用相同的脚本
关于我们如何实施的任何建议。
当前 grep 输出
我想得到的输出
node.js - Node.js 子进程没有给出任何响应或任何错误
我正在尝试在我的 mac 机器上运行的 node.js 应用程序中使用 ripgrep。(VS代码扩展)。
我尝试了 ripgrep-js npm libray 但它没有给出任何响应,并且应用程序只是处于挂起状态。
我尝试调试,发现 ripgrep-js 只是运行 rg 命令并获取其结果并以格式化的方式返回。我尝试运行简单的命令,例如
rg test .
我得到了结果。
但是当我通过 node.js child_process 运行时,它没有给出任何响应。这是我正在运行的代码。
不知道可能是什么原因。我遇到了这个问题child_process.spawn 不会发出任何 与我的 ripgrep 不工作的用例匹配的事件。但目前还不清楚究竟做了什么来解决这个问题。向社区寻求帮助。
为了重现这一点,请使用上面的代码创建 index.js 并使用节点运行node index.js
vim - Vim ripgrep 搜索管道符号
尝试使用 ripgrep 在 vim 中搜索:Rg
例如 '||'。
试过:
但它只匹配每一行的每一列。
根据手册你可以使用--fixed-strings
,但是当我这样做时
它仍然忽略任何数量的“s”来抱怨
如何使用Vim Ripgrep搜索||
?
regex - 如果字符串以另一个字符串开头,则排除匹配
我有一种感觉,这将作为副本关闭,因为这似乎是一个常见的问题......但在我的辩护中,我已经搜索了 SO 以及谷歌,但找不到任何东西。
我正在尝试使用 ripgrep 搜索 SQL 文件,但我想排除作为单行 SQL 注释一部分的匹配项。
- 我不需要担心多行
/* foobar */
注释。只有单行-- foobar
- 我不需要捕捉任何东西
- 我不需要担心字符串可能是文本的一部分,比如
SELECT '-- foobar'
orSELECT '--', foobar
。我可以接受那些错误的排除。
匹配示例:
- 匹配:
SELECT foobar
- 匹配:
, foobar
- 排除:
SELECT baz -- foobar
- 排除:
-- foobar
- 排除:
---foobar
- 排除:
-- blah foobar blah
又名,搜索foobar
但忽略匹配如果--
出现在该行之前的任何点。
我已经尝试过诸如负面后视和其他方法之类的方法,但我似乎无法让它们发挥作用。
这个答案似乎会让我到达那里: https ://stackoverflow.com/a/13873003/3474677
该答案说用于查找不以 . 开头的(?<!grad\()vec
匹配项。所以如果我把它翻译成我的用例,我会得到. 这有效......但仅用于排除包含它的行不处理其他场景。vec
grad(
(?<!--)foobar
--foobar
在最坏的情况下,我可以将 ripgrep 的结果通过管道传输到另一个过滤器并排除匹配的行,--.*foobar
但我希望找到一个一体化解决方案。