📧 Извлечение электронной почты из текстового файла

Мануал

В командной строке Linux есть множество инструментов, которые мы можем использовать для извлечения информации из текстовых файлов.

В этом руководстве мы будем использовать несколько различных методов для извлечения адресов электронной почты из текстового файла на Linux.

Все методы преследуют одну и ту же цель, поэтому выберите тот, который покажется вам наиболее удобным.

Вывод email из текстового файла

Мы предполагаем, что ваш текстовый файл содержит один или несколько адресов электронной почты, разбросанных среди обычного текста.

Задача состоит в том, чтобы с помощью различных утилит Linux проверить текстовые файлы и извлечь из них адреса электронной почты.

Для примера мы используем следующий текстовый файл.

Имя: Ацкий Лук. 
Электронная почта: luka@example.com 
Для деловых запросов обращайтесь по адресу luka@example.net. 
В качестве альтернативы, отправляйте письма моему начальнику admin@example.
Спасибо 

Ознакомьтесь с различными методами, которые мы используем ниже для извлечения каждого из трех адресов электронной почты в этом примере файла.

Следующее регулярное выражение grep может быть использовано для извлечения адресов электронной почты из нашего файла.

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

Следующая команда sed также может быть использована для извлечения адресов электронной почты.

$ 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

Следующий код на Python также можно использовать для извлечения адресов электронной почты из текста.

import re
text = "Имя: Ацкий Лук. "+\
" Электронная почта: luka@example.com" "+\
" Для деловых запросов обращайтесь по адресу luka@example.net. "+\
"В качестве альтернативы, отправляйте письма моему начальнику admin@example."+\
Спасибо" 
emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", text) print (emails)

Сохраните ваш файл как script.py, а затем выполните его для извлечения адресов.

$ python3 script.py

Наконец, мы также можем использовать следующий скрипт на perl для извлечения адресов электронной почты.

#!/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";

Сохраните файл как script.pl, а затем выполните его для извлечения адресов.

$ ./script.pl emails.txt

Заключение

В этом руководстве мы показали несколько различных методов извлечения адресов электронной почты из текстового файла в системах Linux.

Как обычно бывает с большинством вещей в Linux, существует несколько способов выполнения одной и той же задачи.

Используйте тот способ, который вам кажется наиболее удобным, будь то использование стандартных утилит Bash, языков программирования Python или Perl.

 

Добавить комментарий