vi, найти строку и вывод / вывод в отдельный файл - PullRequest
2 голосов
/ 30 августа 2010

Я ищу команду в VI / VIM для поиска определенного текста в файле и захвата всей строки и вывода либо на экране, либо в отдельном файле. например,

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 ]

3 голосов
/ 31 августа 2010
:redir > output.txt
:g/_word_/p
:redir END

Линия будет выводиться на экран и на output.txt.См. :h :redir.

РЕДАКТИРОВАТЬ: Я согласен с другими, которые предлагают использовать старый * nix grep, если вы можете.Ситуации, когда вы не можете использовать grep:

  • Вы ищете буферный текст, которого нет в файле в файловой системе.
  • Вы используетеСпецифичные для Vim регулярные выражения, такие как расположение курсора, номер столбца, метки и т. Д.
  • Вы хотите сделать это кросс-платформенным способом, и grep может не существовать в используемой вами системе.

redir может быть полезным в этих ситуациях.

1 голос
/ 31 августа 2010

используйте команду g (global):

:g/_word_/y

восстановит все строки, содержащие _word_


упомянув команду DOS find, вы, вероятно, захотите использовать grep:

grep -h '_word_' * > results
0 голосов
/ 31 августа 2010

в vi, из командного режима

поиск _word_

 /_word_

восстановить строку

yy

вставить строку

p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...