Vim borra las líneas que contienen la palabra A pero no la palabra B

2

En vim necesito encontrar todas las líneas que contienen una palabra, pero NO contienen otra palabra y las elimino.

He visto un montón de: g,: g! y: v hablar mientras trato de resolver esto, pero nada que me dé lo que necesito, ya que parece que necesito combinar ambos: gy v.

Si no hay una manera de hacerlo en vim, ¿hay otra manera adecuada y fácil?

digitaljoel
fuente

Respuestas:

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

debería hacer el truco.

Basado en el comentario, bueno, funciona para mí:

=$ cat sample.txt 
word
another
word another

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

=$ cat sample.txt 
another
word another

Como puede ver, las líneas con "palabra" se han eliminado, pero no si "otro" estaba en la misma línea.


fuente
no funcionó Parece haber coincidido con las líneas que contienen 'palabra' y no haber tenido en cuenta 'otra' en absoluto.
digitaljoel
Otro está destinado a proteger la línea de la eliminación. Claramente, funciona.