vi,找到行和输出/输出到单独的文件

时间:2010-08-30 19:56:29

标签: vim

我正在寻找VI / VIM中的命令来搜索文件中的特定文本,并在屏幕或单独的文件中获取整行和输出。 e.g。

This is some line with this _word_ and some other text.
This is some line with this some other text and some other text.

所以这只会输出第一行..

3 个答案:

答案 0 :(得分:3)

:redir > output.txt
:g/_word_/p
:redir END

该行将输出到屏幕并输出到output.txt。请参阅:h :redir

编辑:我同意其他建议使用普通旧* nix grep的人,如果可以的话。您可能无法使用grep的情况:

  • 您正在搜索文件系统上文件中不存在的缓冲区文本。
  • 您正在使用特定于Vim的正则表达式扩展,如光标位置,列号,标记等。
  • 您希望以跨平台方式执行此操作,并且您正在使用的系统上可能不存在grep

redir在这些情况下非常有用。

答案 1 :(得分:1)

使用g(全局)命令:

:g/_word_/y

会抽取包含_word_

的所有行

提到了DOS find命令,您可能想要使用grep

grep -h '_word_' * > results

答案 2 :(得分:0)

在vi中,从命令模式

搜索_word_

 /_word_

划线

yy

粘贴该行

p