2011-08-15 83 views
0

我正在使用的文件中的這個IP地址,地址:查找和打印範圍使用bash

192.168.1.121 192.168.1.141 192.168.1.172 192.168.1.180 192.168.1.180 192.168 .1.181 192.168.1.182 192.168.1.185 192.168.1.190

我想要做的是能夠打印出之間,猛砸使用的IP地址範圍。因此,例如通過查看示例192.168.1.121被使用,但我希望能夠打印出121和141之間的所有IP地址。類似地,在141和172之間。我不擔心在121之前打印IP地址。

有沒有辦法做到這一點?

謝謝 Kuti。

回答

0

是的。

addresses=(`< listofnums`) 
network=${addresses[0]%.*} 
hosts=(${addresses[@]##*.}) 

for ((i=${hosts[0]}; i<255; ++i)) 
do 
     case "${hosts[@]}" in *"$i"*) ;; *) echo "$network.$i" ;; esac 
done 
+0

太棒了,非常感謝你,它似乎工作。你能解釋一下嗎?我對bash有點新。 – kuti

+0

下面是解釋參數擴展的部分('$ {}'的實例): http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion 而解釋案例: http://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs – paulmelnikow

+0

正是我在找的東西。再次感謝!。 – kuti