Date: Mon, 14 Jul 2003 13:01:45 -0500 From: D J Hawkey Jr <hawkeyd@visi.com> To: Rob <listone@deathbeforedecaf.net> Cc: questions at FreeBSD <freebsd-questions@freebsd.org> Subject: Re: sed(1) regular expression gurus Message-ID: <20030714180145.GA28972@sheol.localdomain> In-Reply-To: <20030714160454.GA28042@sheol.localdomain> References: <20030714140816.GA27439@sheol.localdomain> <00b001c34a1b$4ad17800$a4b826cb@goo> <20030714160454.GA28042@sheol.localdomain>
next in thread | previous in thread | raw e-mail | index | archive | help
On Jul 14, at 11:04 AM, D J Hawkey Jr wrote: > > On Jul 15, at 12:49 AM, Rob wrote: > > > > awk --posix -F'[^0-9A-Za-z.]+' ' > > $1 ~ /by/ { result = $2 > > for (i=3; i<=NF; i++) { > > if ($i ~ /^([0-9]+\.){3}[0-9]+$/) { > > result = result " " $i > > } > > } > > print result > > }' > > This is better than anything I've dreamed up with sed or awk, and is > really close, but it fails on this: > > by nospam.mc.mpls.visi.com (8.11.6/8.11.6.2) with ESMTP id 3A4E07B03 Another astute fellow offered this: sed -E \ -e "s/by[[:space:]]+//" \ -e "s/\(\[?(([0-9]{1,3}\.){3}[0-9]{1,3})\]?\)/\1/" \ -e "s/[[:space:]]*(\(|id|via|with|E?SMTP|;).*//" The idea being to pull anything that looks like an IP address out of parentheses first (2nd command), then junk any other parenthetical stuff with the other cruft on the line (3rd command). I did learn a new "syntax" from your script, nonetheless. Thanks, Dave -- ______________________ ______________________ \__________________ \ D. J. HAWKEY JR. / __________________/ \________________/\ hawkeyd@visi.com /\________________/ http://www.visi.com/~hawkeyd/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030714180145.GA28972>