可用的IP列表

时间:2014-01-03 19:10:58

标签: linux bash shell awk

我有IP列表及其各自的主机名分配如下:

192.168.1.1 - GW          
192.168.1.2 - HOSTA 
192.168.1.3 - HOSTB        
192.168.1.7 - HOSTC

列表很大。超过4000行具有不同的子网。

我想通过BASH提取上面列表中可用的IP。

例如,IP:

192.168.1.4 
192.168.1.5 
192.168.1.6

要完成我正在尝试将最后一个octect的IP号与{1-255}列表进行比较。 如果最后一个八位字节的数字不在列表中,则IP可用。

还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

使用awk,您可以:

$ awk 'function f(){while(++a!=$4&&a<257)print IP,a}
       a+1!=$4&&NR>1{f()}{a=$4;IP=$1OFS$2OFS$3}END{f()}' FS='[. ]' OFS=. file

这将打印

192.168.1.4 
192.168.1.5 
192.168.1.6
192.168.1.8
192.168.1.9
192.168.1.10
...
192.168.1.254
192.168.1.255
192.168.1.256

如果您想将最后一个IP 192.168.1.7视为上限并且不打印上述可用IP,请删除ENDEND{f()}