如何在命令行中使用 grep 结果?

Gap*_*pry 3 grep bash

当我grep用来查找一些我需要的文本时,它会显示包含与给定模式匹配的行。

例如,

# grep -r ".*Linux" *
path0/output.txt:I hope you enjoyed working on Linux.
path1/output1.txt:Welcome to Linux.
path2/output2.txt:I hope you will have fun with Linux.
Run Code Online (Sandbox Code Playgroud)

然后,我想编辑文件path2/output2.txt,因此,我输入vim path2/output2.txt.

但是,我认为这不是一种有效的方法。

之后如何复制路径grep

Eri*_*son 6

这些是使用 Linux 查找所有文件的安全方法(小写和大写)。

xargs -a <(grep -rlZi Linux *) -0 vim
grep -rlZi Linux *| xargs -0 sh -c 'vim "$@" < /dev/tty' vim
grep -rlZi Linux *| xargs -0 vim # you need to run reset after this command 
Run Code Online (Sandbox Code Playgroud)

GNU xargs 和 BSD xargs 之间存在差异,因此可能不适用于 MacOSX。

  • -Z 和 -0 选项用于 NULL 分隔的文件名
  • -l 用于输出匹配文件的文件名。
  • -i 匹配小写和大写。
  • -o 在 bsd xargs 上的作用与“sh -c”部分相同


use*_*353 5

vim `grep -r ".*Linux" * | cut -f1 -d":"`
Run Code Online (Sandbox Code Playgroud)

反引号用于命令替换。|用于 grep 的管道输出来切割。-d":"说基于分隔的切割:-f1切割后的第一个字段说。

  • 请注意:不推荐使用backtics。应该使用`$(command)`代替.. (4认同)