Portál AbcLinuxu, 9. května 2025 23:29
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.