lunedì 29 giugno 2015

Estrarre indirizzi e-mail da un file di testo [bash]

Salve!

Non so voi, ma se devo scrivere qualsiasi cosa uso sempre l'editor di testo.

Stamattina ho scritto una lettera lunghissima contenente molti indirizzi e-mail.

Allora mi sono chiesto, c'è un modo per estrarre dalla lettera solo gli indirizzi e-mail? E così ho iniziato a cimentarmi con perl, awk, grep, espressioni regolari e altre diavolerie affini. Tutte cose interessanti, intendiamoci, ma sinceramente impresentabili, e poi diventa difficile spiegare quelle cose in un post, considerando anche che in serata è venuto a farmi visita l'anticiclone africano.

Alla fine mi sono riversato su bash, e  devo dire che c'è un sistema veramente semplice per compiere l'operazione di cui sopra.

Immaginiamo di voler estrapolare gli indirizzi email dal seguente testo: (scusate per l'esempio, ma la mia fantasia è inversamente proporzionale al caldo)


ciao Luigi, mi scrivi il tuo indirizzo email?

Il mio indirizzo è il seguente bit3lux@gmail.com

Altri indirizzi messi alla ca**o di cane ciao.birra@gmail.com, ciao.ciao@yahoo.it

come.stai_bene@gmail.com ######## lubit_linux-for_ever@forzalinux.com ########

etc. 


Lo script, che può essere lanciato semplicemente da riga di comando, è il seguente:

for i in $(cat dati.txt); do echo $i | grep "@"; done


Ecco il risultato:



Alla prossima!

2 commenti:

  1. Se vuoi puoi trasformarlo in uno script che funziona per il file di cui gli passi il nome come parametro. Se lo chiami fm.sh per il tuo caso lo lanci con bash fm.sh dati.txt (poi se ti va lo rendi eseguibile).

    #!/bin/bash
    for i in $(cat $1); do echo $i | grep "@"; done

    RispondiElimina
  2. e per fargli salvare l estrazione delle mail in un file di testo ?

    RispondiElimina