Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jul 2003 12:33:38 +0930
From:      "Rob" <listone@deathbeforedecaf.net>
To:        <hawkeyd@visi.com>
Cc:        questions at FreeBSD <freebsd-questions@freebsd.org>
Subject:   Re: sed(1) regular expression gurus
Message-ID:  <00ef01c34a7f$e5afedc0$a4b826cb@goo>
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
Probably because I'm using FS to throw away all non-hostname
characters - by the time it gets to the sendmail version, there's
nothing to distinguish one group of 4 numbers from another.

The 'one or more' is for lines like this

  by some.host.at.another.com ([123.4.56.789]) id 3A4E07B03
    ^                        ^^^            ^^^  ^
where the hostnames (or IPs) are separated by multiple characters. As
you've discovered, this isn't necessarily the best approach....

----- Original Message -----
From: "D J Hawkey Jr" <hawkeyd@visi.com>
Subject: Re: sed(1) regular expression gurus


> 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
> >   }'
> >
> > There may be 'neater' ways of doing it, but it's the most concise
> > example I could come up with.
>
> 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
>
> The parenthetical is a [hacked] sendmail version. I don't see how the
> script fails, though, as you do test for a full/complete "dotted
quad",
> and even test for a BOL and EOL on either side it. The "8.11.6"
shouldn't
> match. I changed the '+'es to "{1,3}"s for even better precision in
the
> "if (...)", but it didn't make any difference (nor should it have).
>
> BTW, why the "one or more" flag in the FS assignment?
>
> > You need to include the --posix option to get the '{3}' notation to
work
> > (peculiar to GNU awk).
>
> Kinda throws portability out the window, but I'll settle for it.
>
> Dave
>
> --
>   ______________________
______________________
>   \__________________   \    D. J. HAWKEY JR.   /
__________________/
>      \________________/\     hawkeyd@visi.com    /\________________/
>                       http://www.visi.com/~hawkeyd/
>
> _______________________________________________
> freebsd-questions@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to
"freebsd-questions-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00ef01c34a7f$e5afedc0$a4b826cb>