Skip site navigation (1)Skip section navigation (2)
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>