2

В vim мне нужно найти все строки, которые содержат одно слово, но НЕ содержат другое слово, и удалить их.

Я видел много:g,:g! и:v говорить, пытаясь понять это, но ничего, что дает мне то, что мне нужно, так как, как мне кажется, мне нужно объединить оба:g и:v.

Если нет способа сделать это в vim, есть ли другой подходящий способ?

1 ответ1

2
:v/another/s/^.*word.*\n//

должен сделать свое дело.

Судя по комментарию - у меня это работает

=$ cat sample.txt 
word
another
word another

=$ vim -c ":v/another/s/^.*word.*\n//" -c ":wq" sample.txt 

=$ cat sample.txt 
another
word another

Как вы можете видеть, строки со словом были удалены, но не в том случае, если "другая" была в той же строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .