Как разбирать эти строки? AWK? Perl?

Вопрос:

У меня есть строки mail.log с участием postgrey, которые я хочу вытащить из переменных, чтобы делать собственные собственные отчеты (я не поклонник postgreyreport). Строки выглядят так:

Jul 15 01:08:50 mail postgrey[14184]: action=pass, reason=triplet found, delay=511, client_name=a0i108.smtpcorp.com, client_address=64.131.95.193, [email protected], [email protected]
Jul 17 00:10:53 mail postgrey[3953]: action=greylist, reason=new, client_name=outbound.na.e.paypal.com, client_address=96.47.30.204, sender=0[email protected]na.e.paypal.com, [email protected]

Я хочу в основном прочитать все строки, соответствующие postgrey.*action= и вытащить поля в переменные, например action=$1, reason=$2 а затем использовать эти переменные для печати собственного собственного отчета или журнала. Еще больший бонус – не сбрасывать строки, которые уже были сброшены раньше.

Заранее спасибо.

Ответ №1

Понял:

#!/usr/bin/perl

while (my $line = <STDIN>)
{
if ($line =~ /postgrey\[\d+\]: action=(.*), reason=(.*?),.* client_name=(\S+), client_address=(\S+), sender=(\S+), recipient=(\S+)/)
{
print "Action: $1\n";
print "Reason: $2\n";
print "Client: $3 ($4)\n";
print "From: $5\n";
print "To: $6\n\n";
}
}

Оцените статью
TechArks.Ru
Добавить комментарий