From owner-freebsd-hackers@freebsd.org Thu Nov 30 21:53:26 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6419CDEA50B for ; Thu, 30 Nov 2017 21:53:26 +0000 (UTC) (envelope-from bsd-lists@BSDforge.com) Received: from udns.ultimatedns.net (static-24-113-41-81.wavecable.com [24.113.41.81]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4072E78495; Thu, 30 Nov 2017 21:53:25 +0000 (UTC) (envelope-from bsd-lists@BSDforge.com) Received: from udns.ultimatedns.net (localhost [127.0.0.1]) by udns.ultimatedns.net (8.14.9/8.14.9) with ESMTP id vAULrsVL090624; Thu, 30 Nov 2017 13:54:00 -0800 (PST) (envelope-from bsd-lists@BSDforge.com) X-Mailer: UDNSMS MIME-Version: 1.0 Cc: "FreeBSD Hackers" , "Rodney W. Grimes" In-Reply-To: From: "Chris H" Reply-To: bsd-lists@BSDforge.com To: "Julian Elischer" Subject: Re: sort(1) sorting IP (v4) addresses (INET_ATON?) Date: Thu, 30 Nov 2017 13:54:00 -0800 Message-Id: <59da92627fcc7edec9bb7708156b8bcc@udns.ultimatedns.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Nov 2017 21:53:26 -0000 On Thu, 30 Nov 2017 19:15:23 +0800 "Julian Elischer" s= aid > On 30/11/17 3:09 am, Rodney W=2E Grimes wrote: > >> I'm constantly dealing with IPv4 addresses (millions)=2E Sorting the mas= s > >> is never perfect, and I'm forced to *visually* fix those out of order=2E > >> 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 =2E -k 4,4n -k 3,3n -k 2,2n =2E/TCPLIST | sort -g>=2E/SORTED > >> > >> Which ends up pretty damn close=2E But not perfect=2E :( > >> 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=2E But seems like too much work for something > >> that'll only accomplish one thing=2E :( > >> > >> Thanks for any thoughts, or further insight=2E > >> > >> [1] > > https://dev=2Emysql=2Ecom/doc/refman/5=2E7/en/miscellaneous-functions=2Ehtml#fu= nction_inet-aton > > The old school on this is you do a substitue of the =2E for a > > and then just use sort -n on that then munge it back to have the =2E'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=2E > > Actually I guess you need both to be orthagnal with -n and others=2E > > > > > and now to try make it work for compacted IPv6 numbers=2E=2E=2E I thought about that also, while I was attempting to sort (oh pun!) this all out, and came up with the idea of packing the IP's up as HEX hashes=2E They actually were easier to sort=2E For example; the IP for ns1=2Eelischer=2Eorg= , and vps1=2Eelischer=2Eorg become: CC6D3F10, or cc6d3f10, depending on which you prefer=2E It also makes the size (length) smaller=2E In this case, we went to what would have been 13 characters to only 8=2E :) It was pretty simple; just sh(1), tr(1), dc(1), and the tiniest bit of math= =2E :) --Chris