Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Nov 2017 11:09:40 -0800 (PST)
From:      "Rodney W. Grimes" <freebsd-rwg@pdx.rh.CN85.dnsmgr.net>
To:        bsd-lists@BSDforge.com
Cc:        FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: sort(1) sorting IP (v4) addresses (INET_ATON?)
Message-ID:  <201711291909.vATJ9eir019941@pdx.rh.CN85.dnsmgr.net>
In-Reply-To: <1f2d985d685f66ad01ff2810cbb941c9@udns.ultimatedns.net>

next in thread | previous in thread | raw e-mail | index | archive | help
> I'm constantly dealing with IPv4 addresses (millions). Sorting the mass
> is never perfect, and I'm forced to *visually* fix those out of order.
> Yet I continue to (later) find some I've missed -- I'm sick of it!
> Thus far, I've found I attain the best results with sort(1):
> 
> sort -t . -k 4,4n -k 3,3n -k 2,2n  ./TCPLIST | sort -g>./SORTED
> 
> Which ends up pretty damn close. But not perfect. :(
> Then it occurred to me that adding INET_ATON to sort, allowing for
> an additional -inet option to sort(1) for IP addresses -- hell if
> MySQL can provide it[1], why the heck can't sort(1)?
> Else I guess I'll have to try and give a shot at cobbling up a C
> utility to manage it. But seems like too much work for something
> that'll only accomplish one thing. :(
> 
> Thanks for any thoughts, or further insight.
> 
> [1] https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_inet-aton

The old school on this is you do a substitue of the . for a <sp>
and then just use sort -n on that then munge it back to have the .'s,

Though I would not be opposed to sort learning about inet numbers,
it should not be -inet as you would want to be able to apply
this to fields as in 4i to sort the 4th field as an inet number.
Actually I guess you need both to be orthagnal with -n and others.


-- 
Rod Grimes                                                 rgrimes@freebsd.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711291909.vATJ9eir019941>