2012-06-05 4 views
1

Предположим, у меня есть текстовый файл из журнала smtp (например, ниже), что такое регулярное выражение для grep для извлечения электронных писем в этом файле журнала?grep email из SMTP mail.log

Jun 4 17:19:12 username postfix/pickup[22643]: C92866601: uid=33 from=<www-data> 
Jun 4 17:19:12 username postfix/cleanup[23012]: C92866601: message-id=<[email protected]> 
Jun 4 17:19:12 username postfix/qmgr[2591]: C92866601: from=<[email protected]>, size=1314, nrcpt=2 (queue active) 
Jun 4 17:19:13 username postfix/smtp[23014]: C92866601: to=<[email protected]>, relay=smtp.domain.com[134.96.7.25]:25, delay=0.5, delays=0.132, delays=11/0.01/0.09/0.21, dsn=2.0.0, status=sent (250 2.0.0 q53M4Dg6001057 Message accepted for delivery) 
Jun 4 17:19:13 username postfix/smtp[23014]: C92866601: to=<[email protected]>, relay=smtp.domain.com[134.96.7.25]:25, delay=0.5, delays=0.132, delays=11/0.01/0.09/0.21, dsn=2.0.0, status=sent (250 2.0.0 q53M4Dg6001057 Message accepted for delivery) 
Jun 4 17:19:13 username postfix/qmgr[2591]: C92866601: removed 
Jun 4 17:19:13 username postfix/pickup[22643]: E146B6601: uid=33 from=<www-data> 
Jun 4 17:19:13 username postfix/cleanup[23012]: E146B6601: message-id=<[email protected]> 
Jun 4 17:19:13 username postfix/qmgr[2591]: E146B6601: from=<[email protected]>, size=1327, nrcpt=2 (queue active) 
Jun 4 17:19:14 username postfix/smtp[23014]: E146B6601: to=<[email protected]>, relay=smtp.domain.com[134.96.7.31]:25, delay=0.43, delays=0.132, delays=11/0.01/0.09/0.21, dsn=2.0.0, status=sent (250 2.0.0 q53M4Dg6001057 Message accepted for delivery) 
Jun 4 17:19:14 username postfix/smtp[23014]: E146B6601: to=<[email protected]>, relay=smtp.domain.com[134.96.7.31]:25, delay=0.43, delays=0.132, delays=11/0.01/0.09/0.21, dsn=2.0.0, status=sent (250 2.0.0 q53M4Dg6001057 Message accepted for delivery) 
Jun 4 17:19:14 username postfix/qmgr[2591]: E146B6601: removed 
Jun 4 17:19:14 username postfix/pickup[22643]: EF1606601: uid=33 from=<www-data> 
Jun 4 17:19:14 username postfix/cleanup[23012]: EF1606601: message-id=<[email protected]> 
Jun 4 17:19:15 username postfix/qmgr[2591]: EF1606601: from=<[email protected]>, size=1329, nrcpt=2 (queue active) 
Jun 4 17:19:15 username postfix/smtp[23014]: EF1606601: to=<[email protected]>, relay=smtp.domain.com[134.96.7.31]:25, delay=0.42, delays=0.132, delays=11/0.01/0.09/0.21, dsn=2.0.0, status=sent (250 2.0.0 q53M4Dg6001057 Message accepted for delivery) 
Jun 4 17:19:15 username postfix/smtp[23014]: EF1606601: to=<[email protected]>, relay=smtp.domain.com[134.96.7.31]:25, delay=0.42, delays=0.132, delays=11/0.01/0.09/0.21, dsn=2.0.0, status=sent (250 2.0.0 q53M4Dg6001057 Message accepted for delivery) 
Jun 4 17:19:15 username postfix/qmgr[2591]: EF1606601: removed 

ответ

4
grep -o '[-a-zA-Z0-9.]*@.[^>]*' filename 

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

Если вы не уверены в имени электронной конвенции, используемой в лог-файл, то попробуйте следующее:

grep -o '<[^@]*@.[^>]*' filename 

Эта команда дает письма предварять с <.

Смежные вопросы