GNU/Linux >> Znalost Linux >  >> Linux

Jak extrahovat e-mailové adresy z textového souboru v Linuxu

Textové soubory obsahují nepřetržitý proud znaků v žádném předem definovaném formátu. Zatímco některé formáty souborů byly vyvinuty nad textovými soubory (např. JSON , YAML ), které očekávají, že textová data budou přítomna v určitém formátu, normálním '.txt' soubory žádné takové konvence nemají. Načítání konkrétního řádku, fráze nebo řetězce z textového souboru je tedy třeba provádět pomocí obecných nástrojů Linuxu.

příkaz grep v Linuxu se používá k nalezení podřetězce nebo textového vzoru v řetězci nebo souboru. Vypíše řádek, kde se nachází podřetězec.

Syntaxe pro použití příkazu grep je následující:

$ grep <substring> <filename/standard input>

Chcete-li například vyhledat podřetězec „Název ” v souboru ‘test.txt ‘ (jehož obsah je zobrazen na snímku obrazovky), spusťte následující.

$ grep "Name" test.txt

Dnes se podíváme, jak extrahovat E-mail adresy mimo textové soubory pomocí příkazu grep .

Jak víme, e-mailová adresa je přítomna ve formátu:

<user_id>@<domain>.<subdomain>

Zde user_id je jedinečný identifikační řetězec zvolený uživatelem a doména a subdoména představují poskytovatele e-mailových služeb (např. gmail.com ).

Názvy domén a subdomén mohou obsahovat pouze abecedy, zatímco user_id může obsahovat abecedy, číselné znaky i další běžné znaky, jako je tečka (.) a podtržítko (_) .

Protože se jedná o určitý vzor, ​​který se má prohledávat, můžeme použít '-e' příznak grep, který nám umožňuje specifikovat vzory regulárních výrazů namísto podřetězců pro extrakci ze souboru.

Tedy syntaxe grep s '-e' je:

$ grep -e <regular_expression> <filename/standard input>

Na základě výše uvedeného vzoru e-mailové adresy můžeme vytvořit následující regulární výraz:

[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+

Zde 'a-zA-Z' představuje libovolnou abecedu, '0-9' představuje číslice, '._' představují tečku nebo podtržítko. Všimněte si, že znaky '\+' představují, že znaková sada v závorkách by se měla objevit jednou nebo vícekrát.

Spustíme tento regulární výraz, abychom extrahovali e-mailové adresy ze souboru ‘test2.txt ‘.

Nejprve si prohlédněte obsah souboru test2.txt jsou:

$ cat test2.txt

Dále spusťte následující příkaz a extrahujte e-mailové adresy ze souboru.

$ grep -e "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt

Jak vidíme, e-mailové adresy byly úspěšně identifikovány Grepem. Jsou však zobrazeny spolu s celým řádkem v souboru.

Chcete-li zobrazit pouze nalezená e-mailová ID, použijte '-o' příznak spolu s '-e' jak je uvedeno.

$ grep -oe "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt
Závěr

V tomto článku jsme viděli, jak extrahovat e-mailové adresy z textového souboru v Linuxu pomocí praktického nástroje příkazového řádku Grep . Tyto e-mailové adresy pak lze také zapsat do souboru pomocí přesměrování.

Pokud máte nějaké dotazy nebo zpětnou vazbu, dejte nám vědět v komentářích níže.


Linux
  1. Jak odstranit „binární data“ z textového souboru (např. Bash_history)?

  2. Jak extrahovat nebo rozbalit soubor tar.xz v Linuxu

  3. Jak extrahovat textovou část binárního souboru v linux/bash?

  1. Jak přidat text na konec souboru v Linuxu

  2. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  3. Jak extrahovat text pomocí OCR z PDF na Linuxu?

  1. Výpis všech e-mailových adres v souboru s grep

  2. Jak snadno přidat text na konec souboru v Linuxu

  3. Jak rozeznat binární soubory od textových souborů v linuxu