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?

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.


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.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.