come fare una ricerca vim ricerca inversa per tutte le righe senza testo


18

con grep posso fare un grep -v "la mia ricerca" per ottenere tutte le righe senza "la mia ricerca"

con sed posso sed '/ baz /! s / foo / bar / g' per trovare sostituire il testo su righe senza out baz

C'è un modo per fare la stessa cosa vim. Ed è possibile ma senza la sintassi "s ///". Utilizzando solo la sintassi di ricerca "/".

Risposte:


29
:g/pattern/

corrisponde a tutte le linee in cui è stato trovato il modello.

:v/pattern/

fa il contrario. Vedi :h globalper maggiori dettagli.

Puoi usarlo in questo modo:

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

per anteporre "pattern not found -" a ogni riga che non ha "pattern" o

:v/pattern/s/nrettap/pattern

per sostituire "nrettap" con "pattern" su ogni riga che non ha "pattern".

Esempi contrari, sì.


Lol'd su "nrettap".
ZioZeiv,


1

Uso di: v commandEdit L'approccio tradizionale per trovare linee che non corrispondono a un modello sta usando il comando : v :

:v/Warning/p

Un trucco accurato quando si lavora con un file di registro di grandi dimensioni in cui si desidera filtrare quante più righe non pertinenti possibili prima di iniziare la ricerca reale è quella di salvare il file con un nome temporaneo ed eliminare tutte le righe non corrispondenti lì:

:sav junk.log
:v/warning/d

Ora stai modificando un clone del tuo file originale con tutte le righe che non corrispondono a "avviso" rimosso e puoi modificarlo a piacimento.

Rif: https://vim.fandom.com/wiki/Search_for_lines_not_contain_pattern_and_other_helpful_searches

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.