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" <[EMAIL PROTECTED]> 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. / __________________/ > \________________/\ [EMAIL PROTECTED] /\________________/ > http://www.visi.com/~hawkeyd/ > > _______________________________________________ > [EMAIL PROTECTED] mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "[EMAIL PROTECTED]" > _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"