對 IP 位址進行排序時出現奇怪的行為。 (排序-nu)

對 IP 位址進行排序時出現奇怪的行為。 (排序-nu)

我只是嘗試|sort -nu(數字和唯一)大約30 個IP 位址的列表,並注意到除了剔除重複行之外,它還將相似的行(即具有相同前兩個或三個八位元組的位址)視為相同;並將它們也剪掉。

那是怎麼回事?

為了顯示;你可以模擬這個場景,如下:


標準輸入

for ip in 192.168.1.{1..5};
do
    echo "$ip";
done > ip.log

for ip in 10.1.1.{1..5};
do
    echo "$ip";
done >> ip.log

cat 'ip.log'

標準輸出

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5

標準輸入

sort -nu 'ip.log'

標準輸出

10.1.1.1
192.168.1.1

答案1

告訴sort按版本號碼排序:

$ sort -Vu 'ip.log'
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

或者,告訴它對所有四個欄位進行數字排序:

$ sort -nu -t. -k1 -k2 -k3 -k4  'ip.log'
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

相關內容