如何打开由 grep 生成的文件?

Jon*_*han 24 grep bash

我经常grep一堆文件找一行,然后grep返回一个结果。我不想将文件名复制并粘贴到新命令中,而是希望能够使用编辑器打开该结果。类似的东西:grep foo | vim。有没有办法在 BASH 中做到这一点?

Ant*_*hon 28

使用grep -l只得到匹配的文件,而不是匹配的文本的文件名,然后结合起来vim

vim "$(grep -l some_pattern file_names)"
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以使用quickfixerrorfile功能于vim

$ grep -n foo * > /tmp/foo.list
$ vim -q /tmp/foo.list
Run Code Online (Sandbox Code Playgroud)

Vim 将打开第一个文件/tmp/foo.list并将光标直接放在foo找到的行中。您可以使用转到下一个实例:cn与前一个实例使用:cp

旁注:如果您已经在使用vimgvim,那么我建议您使用其内置grep功能。阅读:help vimgrep更多信息。