GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So extrahieren Sie E-Mail-Adressen aus einer Textdatei unter Linux

Textdateien enthalten einen kontinuierlichen Strom von Zeichen in keinem vordefinierten Format. Während sich einige Dateiformate auf der Grundlage von Textdateien entwickelt haben (z. B. JSON , YAML ), die Textdaten in einem bestimmten Format erwarten, normal '.txt' Dateien haben keine solchen Konventionen. Daher muss das Abrufen einer bestimmten Zeile, eines Satzes oder einer Zeichenfolge aus einer Textdatei mit generischen Linux-Tools erfolgen.

Der grep-Befehl in Linux wird verwendet, um eine Teilzeichenfolge oder ein Textmuster in einer Zeichenfolge oder einer Datei zu finden. Es gibt die Zeile aus, in der der Teilstring gefunden wird.

Die Syntax zur Verwendung des grep-Befehls lautet wie folgt:

$ grep <substring> <filename/standard input>

Um beispielsweise nach der Teilzeichenfolge „Name“ zu suchen “ in der Datei ‚test.txt ‘ (deren Inhalt im Screenshot angezeigt wird), führen Sie Folgendes aus.

$ grep "Name" test.txt

Heute werden wir sehen, wie man E-Mail extrahiert Adressen aus Textdateien mit dem grep-Befehl .

Wie wir wissen, liegt eine E-Mail-Adresse in folgendem Format vor:

<user_id>@<domain>.<subdomain>

Hier user_id ist eine vom Benutzer gewählte eindeutige Kennungszeichenfolge, und Domain und Subdomain stellen den E-Mail-Dienstanbieter dar (z. B. gmail.com ).

Domain- und Subdomain-Namen dürfen nur Buchstaben enthalten, wohingegen user_id kann Buchstaben, Ziffern sowie andere gebräuchliche Zeichen wie Punkt (.) enthalten und Unterstrich (_) .

Da dies ein bestimmtes Muster ist, das gesucht werden soll, können wir das '-e' verwenden Flag von grep, das es uns erlaubt, reguläre Ausdrucksmuster anstelle von Teilstrings zum Extrahieren aus einer Datei anzugeben.

Also die Syntax von grep mit '-e' ist:

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

Basierend auf dem zuvor besprochenen Muster einer E-Mail-Adresse können wir den folgenden regulären Ausdruck bilden:

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

Hier 'a-zA-Z' steht für ein beliebiges Alphabet, '0-9' steht für Zahlen, '._' stellen einen Punkt oder einen Unterstrich dar. Beachten Sie, dass die Zeichen '\+' stellen dar, dass der Zeichensatz in den Klammern einmal oder mehrmals vorkommen soll.

Wir führen diesen regulären Ausdruck aus, um E-Mail-Adressen aus der Datei „test2.txt“ zu extrahieren ‘.

Sehen Sie sich zuerst den Inhalt der Datei test2.txt an sind:

$ cat test2.txt

Führen Sie als Nächstes den folgenden Befehl aus, um E-Mail-Adressen aus der Datei zu extrahieren.

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

Wie wir sehen können, wurden die E-Mail-Adressen erfolgreich von Grep identifiziert. Sie werden jedoch zusammen mit der vollständigen Zeile in der Datei angezeigt.

Um nur die gefundenen E-Mail-IDs anzuzeigen, verwenden Sie den '-o' Flag zusammen mit '-e' wie abgebildet.

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

In diesem Artikel haben wir gesehen, wie man E-Mail-Adressen aus einer Textdatei unter Linux mit dem praktischen Befehlszeilentool Grep extrahiert . Diese E-Mail-Adressen können dann auch per Redirection in eine Datei geschrieben werden.

Wenn Sie Fragen oder Feedback haben, teilen Sie uns dies in den Kommentaren unten mit.


Linux
  1. So extrahieren Sie .gz- und .tar.gz-Dateien unter Linux

  2. Auflisten aller E-Mail-Adressen in einer Datei mit grep

  3. So fügen Sie unter Linux einfach Text an das Dateiende an

  4. Wie entferne ich „Binärdaten“ aus einer Textdatei (z. B. Bash_history)?

  5. So extrahieren oder entpacken Sie die tar.xz-Datei unter Linux

So erstellen Sie Verzeichnisse aus einer Textdatei unter Linux

So entfernen Sie ein Passwort aus einer PDF-Datei unter Linux

So zeigen Sie Daten aus einer Textdatei in Linux an

So fügen Sie Text am Anfang einer Datei in Linux hinzu

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So extrahieren Sie die Tar.xz-Datei in der Linux-Befehlszeile