How to sort IP addresses from the command line
By breaking a list of IPv4 addresses into individual octets, the unix sort
command will display the output in numerical order.
cat filewithipaddresses.txt | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n
-t .
= Separator identifier used to split the IP address into individual components.-k1,1n
= Each section of the IP address is (n)umerically sorted by the (k)ey.
Given a text file with random IP address:
jemurray@mbp-2019:~ $ cat filewithipaddresses.txt | head
10.1.3.2
254.1.3.2
192.168.37.254
192.168.37.16
192.168.37.221
192.168.37.18
192.168.37.210
192.168.37.136
192.168.37.222
192.168.37.223
Sorted output:
jemurray@mbp-2019:~ $ cat filewithipaddresses.txt | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head
10.1.3.2
192.168.37.1
192.168.37.2
192.168.37.6
192.168.37.7
192.168.37.10
192.168.37.14
192.168.37.16
192.168.37.17