Appunti bash: estrarre indirizzi email da un file

Appunti bash: estrarre indirizzi email da un file

Vi è mai capitato di dover analizzare dei file di testo ed estrapolarne tutti gli indirizzi email? Beh, questo breve articolo è un promemoria che illustra un comando da una riga che sfrutta Grep, tool storico degli ambienti Unix/Linux, per compiere operazioni di questo tipo.

Grep è uno strumento molto potente che permette di manipolare con estrema facilità stringhe e flussi di testo da riga di comando o da script shell.

Vediamo il comando in azione. L'esempio ha come scopo l'estrazione di tutti gli indirizzi email presenti in un file di testo. Come output avremo una lista degli indirizzi, uno per riga.

cat nomedelfile | grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'

Semplice vero?

Possiamo migliorare questo script aggiungendo ordinando l'elenco alfabeticamente ed eliminando i duplicati. Per farlo basta solo far passare l'output attraverso sort e uniq.

cat nomedelfile | grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'| sort | uniq

Ricordate che questo è solo un esempio e ci sono un numero infinito di possibili varianti, anche usando strumenti diversi come Sed o AWK.

utile post, me lo segno, grazie :D

ciao sto provando la riga di comando su un file .txt , il risultato è il seguente:
cat: provamail: File o directory non esistente
ammetto che sono un novellino con linux , spero in un aiuto
grazie

Ciao, il file si trova nella directory in cui stai lanciando il comando?

Invia nuovo commento
Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
Refresh Type the characters you see in this picture. Type the characters you see in the picture; if you can't read them, submit the form and a new image will be generated. Not case sensitive.  Switch to audio verification.