GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il grep con l'output a colori

Uno dei comandi potenti e ampiamente utilizzati nella shell è grep. Cerca in un file di input e trova le righe in cui si trova il modello specificato. Per impostazione predefinita, tutti i modelli abbinati vengono stampati sullo stdout che di solito è il terminale. Possiamo anche reindirizzare l'output corrispondente ad altri flussi come file.

L'utilizzo di base di grep è questo:

$ grep "some text" file.txt

grep è in grado di evidenziare a colori la stringa corrispondente nel suo output. Ma, per impostazione predefinita, quell'opzione è disattivata.

$ grep abc a_file.txt
abcdef

Il —-colore Il parametro dice a grep di colorare i termini di ricerca nell'output, il che li aiuta a distinguersi tra tutto il resto del testo sulla riga. Scegli il colore che desideri utilizzando GREP_COLOR variabile di ambiente:export GREP_COLOR=36 ti dà ciano, ed export GREP_COLOR=32 ti dà verde lime.

Sono disponibili 3 opzioni di colore:

  • –color=auto
  • –color=sempre
  • –color=mai

Con color=always, colora la stringa abbinata.

$ grep --color=always abc a_file.txt
abcdef

Abbastanza spesso, vuoi sfogliare l'output:

$ grep --color=always abc a_file.txt | less 
ESC[01;31mabcESC[00mdef
(END)

Il problema è che less non capisce quei caratteri di controllo, per impostazione predefinita. Devi usare il parametro -R.

$ grep --color=always abc a_file.txt |less -R
abcdef

In alternativa, usane di più.

$ grep --color=always abc a_file.txt | more 
abcdef

Un altro scenario problematico è quando si desidera salvare l'output di grep in un file. Il file di output conterrà quei caratteri di controllo.

$ grep --color=always abc a_file.txt > myoutput.txt
$ less myoutput.txt
ESC[01;31mabcESC[00mdef
myoutput.txt (END)

Con color=auto, mostra il colore nell'output a meno che l'output non venga reindirizzato a un comando o reindirizzato a un file.

Infine, puoi specificare il parametro color in una variabile di ambiente specifica di grep. Quindi, non è necessario inserirlo nella riga di comando.

$ export GREP_OPTIONS='--color=always' 

Nota finale

Il comando grep è uno dei più utili e potenti nell'arsenale del Terminale. La sua premessa è semplice:dati uno o più file, stampa tutte le righe in quei file che corrispondono a un particolare modello di espressione regolare. Per evidenziare il motivo corrispondente, utilizzare l'opzione -color. Anche se la posizione dell'opzione non ha importanza, la convenzione è di posizionare prima le opzioni.


Linux
  1. Come evidenziare una parola nell'output di "cat"??

  2. Come trovare file con il comando fd in Linux

  3. Come faccio a grep in modo ricorsivo?

  4. Come memorizzare il risultato di diff in Linux

  5. Come eseguire il grep per i contenuti dopo il modello?

Come utilizzare Linux Cat Command (con esempi)

8 Comando Tee Linux con esempi

Come reindirizzare l'output del comando della shell

Come grep \n nel file

Come rimuovere il carattere \r con sed

grep output da lungo a largo