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!
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).
RispondiElimina#!/bin/bash
for i in $(cat $1); do echo $i | grep "@"; done
e per fargli salvare l estrazione delle mail in un file di testo ?
RispondiElimina