Sortowanie adresów IP za pomocą linuksowego polecenia sort

Konrad Kowalski
  • Konrad Kowalski
  • 02/04/2018
  • Linux
  • 0 komentarzy
Linux

Administrując systemami Linux, zarządzając sieciami czy firmowymi firewallami, często tworzy się listy zawierające adresy IP. Listy tworzone są w rozmaitych celach np. blokowania ruchu. Z czasem rozrastają się do coraz większych rozmiarów. Potrzeba ich manualnego posortowania stałoby się zbyt czasochłonna. Aby uporządkować adresy IP można skorzystać z linuksowego polecenia sort.

Plik z adresami IP (adresy.txt)

8.8.8.8
94.146.251.100
8.8.4.4
153.19.250.123
80.50.231.226
150.254.183.15 	

Aby posortować numerycznie adresy IP należy skorzystać z polecenia sort oraz następujących opcji:

sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 adresy.txt

Gdzie:
n informuje sort, że sortowane będą liczby (sortowanie numeryczne)
t każda z linii zawiera kolejne pola z liczbami, które oddzielone są wskazanym separatorem (w IP są to kropki „.”)
k wskazanie pola / kolumny, (-k 1,1 sortowanie wg. pierwszego pola/kolumny i tylko tego pola, następnie wg. następnego -k2,2, aż do pola 4 bo z tylu składa się adres IP)

sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 adresy.txt
8.8.4.4
8.8.8.8
80.50.231.226
94.146.251.100
150.254.183.15
153.19.250.123

Od wersji 7.0 GNU coreutils, wprowadzono opcję sortowania wg. numerów wersji (oprogramowania). Zamiast wpisywać długie polecenie sort, przedstawione we wcześniejszej części artykułu można skorzystać z opcji:

-V, --version-sort

Opcja ta sortuje kolejne linie według liczb (docelowo numerów wersji np. oprogramowana np. ver 1.0, ver. 2.0). Jako, że adres IP przypomina numer wersji oprogramowania polecenie zadziała jak należy.

sort -V adresy.txt
8.8.4.4
8.8.8.8
80.50.231.226
94.146.251.100
150.254.183.15
153.19.250.123

Dodaj komentarz