Portál AbcLinuxu, 2. listopadu 2025 07:47
Apr 20 23:14:07 mail postfix/cleanup[7510]: 3FHEXAA40662: warning: header Subject: Monitoring cehosi - Prodej-BYTY (1) from unknown[10.0.0.1]; from=|odesilatel@neco.cz| to=|monitoring@necojineho.cz| proto=ESMTP helo=|ucet.srv.cz|
Jde mi o to, vysekat z toho řádku jen Datum, čas, odesílatele, příjemce a předmět.
Nechci ani tak pomoci s regexy, jako spíše s nástrojem, kterým to provést. U žádného jsem totiž neobjevil, že by výstupem mohl být jen určitá část řádku, vždy zobrazí celý řádek…
Díky
grep -o. To tady asi nebude. Jinak je zapotřebí v sedu/awk/perlu/čemkoli provést nahrazení typu
s/^.*(část1).*(část2)....*$/\1 \2.../tedy nahrazení celého řádku vybranými částmi.
predmet=`sed -n '2 s/^.*ubject: \(.*\) from.*;.*$/\1/p' filename`
(ukládá to do proměnné $predmet vybraný text z druhého řádku). Je to velká prasárna?
#!/usr/bin/perl
# perl log_parse.pl /var/log/maillog
use strict;
use warnings;
# $1 month
# $2 day
# $3 time
# $4 subject
# $5 from
# $6 to
while(<>){
chomp;
if (/^(.+)\s+(\d+)\s([0-9:]+)\s.*warning: header Subject: (.*) from .*; from=<(.+)> to=<(.*)>/) {
print "$1|$2|$3|$5|$6|$4\n";
}
}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.