GNU/Linux >> Linux Esercitazione >  >> Linux

Come estrarre indirizzi e-mail da file di testo in Linux

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.


Linux
  1. Come aggiungere testo alla fine del file in Linux

  2. Come estrarre i file .gz e .tar.gz in Linux

  3. Come aggiungere facilmente testo alla fine del file in Linux

  4. Come rimuovere i "dati binari" da un file di testo (ad es. Bash_history)?

  5. Come estrarre o decomprimere il file tar.xz in Linux

Come creare directory da un file di testo in Linux

Come rimuovere la password da un file PDF in Linux

Come visualizzare i dati da un file di testo in Linux

Come aggiungere testo all'inizio del file in Linux

Come rimuovere (^M) caratteri da un file in Linux

Come estrarre il file Tar.xz sulla riga di comando di Linux