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.