Grep parade!

Uno dei comandi più utilizzati quando si amministra un server UNIX o Linux da linea di comando è senza dubbio `grep`. Per chi non lo conoscesse, mi limito a dire che si tratta di uno script efficiente e flessibilissimo in grado di individuare espressioni regolari all’interno di un file o di un output testuale. Il nome del comando è infatti acronimo di “global regular-expression print”. Tutto il resto lo trovate con il solito `man grep`. Per chi invece usa abitualmente grep per i task di amministrazione di ogni giorno, raccolgo qui una serie di esempi d’uso un po’ più evoluti e – magari – insoliti. Potrebbero essere utili a voi come lo sono stati a me in numerose occasioni.

Trova le ricorrenze della sequenza qui, quo AND qua in file.txt:
grep "qui.*quo.*qua" ./file.txt

Trova le ricorrenze di qui OR quo OR qua in file.txt:
grep -P 'qui|quo|qua' ./file.txt

Verifica che un indirizzo email sia formattato correttamente:
echo "info@test.eu" | grep -Ei 'b[a-z0-9]{1,}@*.(it|eu|com|net|org|tv)b'

Trova la parola qua in modalità case in-sensitive in ./file.txt:
grep -iw "is" demo_file

Trova gli indirizzi email in test.txt formattati come <qwerty.qwerty@qwerty.com> e rimuove i caratteri di enclosure (< e >):
grep -o '<.*@.*.*>' ./test.txt | tr -d '<>'

Trova le ricorrenze multiple di qui OR quo OR qua in una stringa di testo:
echo -e "1) qui quo quan2) quo qui quan3)qui quo quin4) qua quo quin" | grep -E '(qui|quo|qua).*1'

Verifica se la stringa passata mediante pipe sia un indirizzo IP o meno (provate passando un indirizzo IP mal formato):
echo "192.168.123.123" | grep -E 'b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b'

Mostra tutte le righe dell’httpd.conf omettendo le istruzioni commentate:
grep -v -E '^#|^$' /etc/apache2/httpd.conf

Supponendo che lo script test.sh contenga le seguenti istruzioni:

#!/bin/bash
contatore=1
until [ $contatore -gt 10 ]; do
echo contatore $contatore
let contatore+=1
done

… il comando che segue individua la riga 4 e le 3 righe che seguono:

./test.sh | grep -A 3 -i "contatore 4"

… il comando che segue individua invece tutte le righe tranne quelle contenenti il 4 e il 6:

./test.sh | grep -v -e "4" -e "6"

Il sito Internet ufficiale del progetto grep si trova all’indirizzo https://gnu.org/software/grep/.

Condivido

Leave a comment