Website-Suche

E-Mail aus Textdatei extrahieren


Die Linux-Befehlszeile verfügt über viele Tools, mit denen wir Informationen aus Textdateien extrahieren können. In diesem Tutorial verwenden wir einige verschiedene Methoden, um E-Mail-Adressen aus einer Textdatei unter Linux zu extrahieren.

Alle Methoden erreichen das gleiche Ziel, also verwenden Sie diejenige, die Sie am besten finden.

In diesem Tutorial lernen Sie:

  • So extrahieren Sie E-Mail-Adressen aus einer Textdatei

Extrahieren von E-Mail-Adressen aus einer Textdatei

Wir gehen davon aus, dass Ihre Textdatei eine oder mehrere E-Mail-Adressen enthält, die in einem gewöhnlichen Text verstreut sind. Ziel ist es hierbei, mit verschiedenen Linux-Dienstprogrammen die Textdateien für uns zu sichten und die E-Mail-Adressen zu extrahieren.

Zur Veranschaulichung unserer Beispiele verwenden wir die folgende Textdatei.

Name: Luke Reynolds
Email: luke@example.com
For business inquiries, contact luke@example.net instead
Alternatively, send mail to my boss admin@example.com
The End

Sehen Sie sich die verschiedenen Methoden an, die wir unten verwenden, um jede der drei E-Mail-Adressen in dieser Beispieldatei zu extrahieren.

  1. Der folgende reguläre grep-Ausdruck kann verwendet werden, um die E-Mail-Adressen in unserer Datei zu extrahieren.

    grep -oe "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" emails.txt
    
  2. Der folgende sed-Befehl kann auch zum Extrahieren von E-Mail-Adressen verwendet werden.

    sed -r 's/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/\n&\n/ig;s/(^|\n)[^@]*(\n|$)/\n/g;s/^\n|\n$//g;/^$/d' emails.txt
    
  3. Der folgende Python-Code kann auch verwendet werden, um E-Mail-Adressen aus Text zu extrahieren.

    import re
    text = "Name: Luke Reynolds"+\
    "Email: luke@example.com"+\
    "For business inquiries, contact luke@example.net instead"+\
    "Alternatively, send mail to my boss admin@example.com"+\
    "The End"
    
    
    emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", text)
    print (emails)
    

    Speichern Sie Ihre Datei als script.py und führen Sie sie dann aus, um die E-Mails zu extrahieren.

    python3 script.py
    
  4. Schließlich können wir auch den folgenden Perl-Code verwenden, um E-Mail-Adressen zu extrahieren.

    #!/usr/bin/perl
    
    use strict;
    
    my $email_count;
    
    while (my $line = <>) { #read from file or STDIN
      foreach my $email (split /\s+/, $line) {
         if ( $email =~ /^[-\w.]+@([a-z0-9][a-z-0-9]+\.)+[a-z]{2,4}$/i ) {
     		print $email . "\n";
    		$email_count++;
    	
      }
    }
    }
    
    print "Emails Extracted: $email_count\n";
    

    Speichern Sie die Datei als script.pl und führen Sie sie dann aus, um die E-Mails zu extrahieren.

    ./script.pl emails.txt
    

Abschließende Gedanken

In diesem Tutorial haben wir verschiedene Methoden zum Extrahieren von E-Mail-Adressen aus einer Textdatei unter Linux gezeigt. Wie bei fast allem in Linux üblich, gibt es mehrere Möglichkeiten, dieselbe Aufgabe zu erfüllen. Verwenden Sie die Methode, die Sie am bequemsten finden, sei es die Verwendung von Standard-Bash-Dienstprogrammen oder den Programmiersprachen Python oder Perl.

Verwandte Artikel: