In Unix "meno", posso passare alla riga successiva che NON contiene X?


21

Nello lessstrumento Unix , è possibile passare alla riga successiva che non contiene una determinata espressione?

A volte devo guardare attraverso i file che contengono migliaia di linee adiacenti simili che, ad esempio, dicono tutti "Computing qualcosa " e mi interessa la riga successiva dopo il blocco corrente, che non contiene la parola "Computing".

Risposte:


29

Sì, questa è una funzionalità di ricerca non corrispondente, ad esempio:

less file.conf

quindi digiti /e dopo che !l'ultima riga dovrebbe apparire come:

Non-match /

quindi digitare il modello, ad esempio, Non-match /^#per cercare la prima riga senza iniziare#

Invece del !personaggio puoi anche usare Ctrl+N.


1
Questo è perfetto. Non avrei potuto aspettarmi una risposta migliore.
Dehmann,

4

In aggiunta alla risposta di Casual Coder:

Puoi anche filtrare del tutto le linee:

<logfile grep -v mypattern |less 

Lo svantaggio è che devi uscire e riavviare grep per cambiare il modello; il vantaggio è che le linee che non vuoi vedere sono nascoste, il che rende più facile individuare modelli interessanti nelle linee che ti interessano.


1

Non solo puoi saltare tra le linee che non contengono X, ma puoi nascondere le linee che contengono X, usando lessil &comando regex filter.

less file.conf

quindi digitare &!^Computingla enterchiave e tutte quelle linee saranno nascoste alla vista.

Puoi comunque cercare all'interno delle righe rimanenti con /.

Una volta trovata la linea desiderata, puoi riportare le altre se hai bisogno del loro contesto: digita &quindi la enterchiave per rimuovere il filtro.

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.