cómo hacer una búsqueda inversa de búsqueda vim para todas las líneas sin texto


18

con grep puedo hacer un grep -v "mi búsqueda" para obtener todas las líneas sin "mi búsqueda"

con sed puedo sed '/ baz /! s / foo / bar / g' para encontrar texto de reemplazo en líneas sin baz

¿Hay alguna manera de hacer lo mismo vim? Y es posible pero sin la sintaxis "s ///". Usando solo la sintaxis de búsqueda "/".

Respuestas:


29
:g/pattern/

coincide con todas las líneas donde se encuentra el patrón.

:v/pattern/

hace lo contrario Ver :h globalpara más detalles.

Puedes usarlo así:

:v/pattern/norm Ipattern not found - <CR>

para anteponer "patrón no encontrado" a cada línea que no tenga "patrón" o

:v/pattern/s/nrettap/pattern

para reemplazar "nrettap" con "patrón" en cada línea que no tiene "patrón".

Ejemplos contribuidos, sí.


Yo lol'd en "Nrettap".
UncleZeiv


1

Uso de: v commandEdit El enfoque tradicional para encontrar líneas que no coinciden con un patrón es usar el comando : v :

:v/Warning/p

Un buen truco cuando se trabaja con un archivo de registro grande donde desea filtrar tantas líneas irrelevantes como sea posible antes de comenzar su búsqueda real es guardar el archivo con un nombre temporal y eliminar todas las líneas que no coinciden allí:

:sav junk.log
:v/warning/d

Ahora está editando un clon de su archivo original con todas las líneas que no coinciden con la "advertencia" eliminada y puede editarlo a voluntad.

Ref: https://vim.fandom.com/wiki/Search_for_lines_not_containing_pattern_and_other_helpful_searches

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.