我怎样才能将 grep 输出的第二行作为 vim 的输入参数?

我怎样才能将 grep 输出的第二行作为 vim 的输入参数?
$ grep -l -R "myEditor_Init" *
Public/Js/eWebEditor/dialog/ewebeditor.htm
Public/Js/eWebEditor/ewebeditor.htm
Public/Js/eWebEditor/js/ewebeditor.js

例如,我想用一个命令 grep 和 vim 第三个文件,我该怎么做?

谢谢。

答案1

正如 Ignacio 所暗示的,你可以重新编写 grep 命令来获取仅有的您想要的一个文件,例如:

$ grep -l -R --include="*.js" "myEditor_Init" *
Public/Js/eWebEditor/js/ewebeditor.js

在这种情况下,您可以使用以下方式进行编辑,例如(使用反引号将结果作为参数提供给 vim:

$ vim `grep -l -R --include="*.js" "myEditor_Init" *`

如果您确实想使用 * 而不是限制为 *.js 文件,您仍然可以这样做:

$ vim `grep -l -R "myEditor_Init" * | tail -1`

我经常发现自己(使用 csh 或 bash)做如下的事情:

$ grep -l -R --include="*.js" "myEditor_Init" *
Public/Js/eWebEditor/js/ewebeditor.js
$ vim `!!`

重复!!上一个命令,反引号将该命令的结果作为参数提供给 vim。

相关内容