I file di testo contengono un flusso continuo di caratteri in nessun formato predefinito. Mentre alcuni formati di file si sono sviluppati su file di testo (ad es. JSON , YAML ), che si aspettano che i dati di testo siano presenti in un formato particolare, normale '.txt'
i file non hanno tali convenzioni. Pertanto, il recupero di una riga, frase o stringa specifica da un file di testo deve essere eseguito utilizzando strumenti Linux generici.
Il comando grep in Linux è usato per trovare una sottostringa o un pattern di testo, in una stringa o in un file. Stampa la riga in cui si trova la sottostringa.
La sintassi per l'utilizzo del comando grep è il seguente:
$ grep <substring> <filename/standard input>
Ad esempio, per cercare la sottostringa “Nome ” nel file 'test.txt ' (il cui contenuto è mostrato nello screenshot), esegui quanto segue.
$ grep "Name" test.txt
Oggi vedremo come estrarre Email indirizzi di file di testo utilizzando il comando grep .
Come sappiamo, un indirizzo Email è presente nel formato:
<user_id>@<domain>.<subdomain>
Qui, id_utente è una stringa identificativa univoca scelta dall'utente e dominio e sottodominio rappresentano il provider del servizio di posta elettronica (es. gmail.com ).
I nomi di dominio e sottodominio possono contenere solo alfabeti, mentre id_utente può contenere alfabeti, caratteri numerici e altri caratteri comuni come il punto (.)
e sottolinea (_)
.
Poiché questo è un modello definito che deve essere ricercato, possiamo usare il '-e'
flag di grep, che ci consente di specificare modelli di espressioni regolari invece di sottostringhe, per l'estrazione da un file.
Pertanto, la sintassi di grep con '-e'
è:
$ grep -e <regular_expression> <filename/standard input>
Sulla base del modello di un indirizzo email discusso in precedenza, possiamo formare la seguente espressione regolare:
[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+
Qui, 'a-zA-Z'
rappresenta qualsiasi alfabeto, '0-9'
rappresenta numeri, '._'
rappresentano un punto o un trattino basso. Nota che i caratteri '\+'
rappresentano che il set di caratteri tra parentesi deve apparire una o più volte.
Eseguiremo questa espressione regolare per estrarre gli indirizzi e-mail dal file "test2.txt '.
Innanzitutto, visualizza il contenuto del file test2.txt sono:
$ cat test2.txt
Quindi, esegui il comando seguente per estrarre gli indirizzi e-mail dal file.
$ grep -e "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt
Come possiamo vedere, gli indirizzi Email sono stati identificati con successo da Grep. Tuttavia, vengono visualizzati insieme alla riga completa nel file.
Per visualizzare solo gli ID e-mail trovati, utilizza il '-o'
flag insieme a '-e'
come mostrato.
$ grep -oe "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt
Conclusione
In questo articolo abbiamo visto come estrarre gli indirizzi email da un file di testo in Linux, utilizzando il pratico strumento da riga di comando Grep . Questi indirizzi e-mail possono quindi anche essere scritti in un file utilizzando il reindirizzamento.
Se hai domande o feedback, faccelo sapere nei commenti qui sotto.