Ответ 1
Используйте команду :g!
для удаления каждой строки, которая не соответствует.
:g!/ERROR/d
У меня есть файл журнала со строкой "ОШИБКА" на некоторых строках. Я хочу удалить каждую строку, у которой нет ERROR, чтобы я мог видеть, что нужно для исправления. Я собирался сделать что-то вроде vim:
% s/! (ОШИБКА)//
чтобы заменить строки без ошибок пустой строкой.
Я не верю, что стандартные регулярные выражения могут это сделать, но, возможно, я ошибаюсь...
Используйте команду :g!
для удаления каждой строки, которая не соответствует.
:g!/ERROR/d
В vim вы можете запустить любую команду фильтра в тексте в буфере. Например,
:%!grep ERROR
заменит весь буфер только строками, которые соответствуют данному регулярному выражению.
Это полезно не только для grep
, например, вы можете сортировать строки в буфере с помощью :%!sort
. Или вы можете сделать то же самое для любого диапазона текста, используя команду V
, чтобы пометить блок, а затем :!filter-command
(vim автоматически заполнит '<,'>
, чтобы указать текущий маркированный блок).
if on * nix, вы можете использовать grep -v или awk
awk '!/ERROR/' file | more
на компьютере с Windows, вы можете использовать findstr
findstr /v /c:ERROR file | more
Работает негативный просмотр.
Отрицательное соответствующее регулярное выражение будет использовать ^ Напр. [^ E] будет соответствовать всем, кроме E.