Мне нужно искать строки, которые содержат какое-то слово, но не содержат второго слова.
Например, найдите строки, содержащие слово «This», но не слово «red».
так что для файла, содержащего эти строки
This is a blue coat
This is a red coat
This is a purple coat
That is a coat
Поиск будет искать только первую и третью строки.
Спасибо за любой совет!
Ответы:
Вы можете использовать эту команду для печати строк, содержащих,
This
а неred
:\&
разделяет ветви как логические,AND
потому что мы хотим, чтобы линии удовлетворяли двум условиям (ветвям),\(.*This\)
это первая ветвь, это может быть просто,This
но это более общий способ,\(.*red\)\@!
является второй ветвью,\@!
означает «совпадение нулевой ширины, если предыдущий атом не совпадает», как логическоеNOT
.Другими словами:
источник
Посмотрите на этот пост.
Объедините его с ответом @romainl, и вы сможете делать все, что захотите.
Пример: допустим, я хочу добавить a
const
к функциям, у которых их нет.VIM скрипт:
Выход:
Объяснение:
- достань мне все строки, которые есть
word =
- объединить правила
- строка не должна содержать
const
.источник