I have a text file with IP addresses in cidr format. One cidr per line. How do I convert the cidrs to IP ranges i.e start IP - end IP. One IP range per line. Please note the space on either side of the - .
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You'd better use ipcalc
:
ipcalc 192.168.0.1/24 -nb | awk '/HostMin/{min=$NF} /HostMax/{max=$NF} END {print min" - "max}'
192.168.0.1 - 192.168.0.254
A simple script to loop through the file:
#!/bin/bash
cat file.txt |\
while IFS= read ip; do
ipcalc "$ip" -nb |\
awk ' /HostMin/{min=$NF}
/HostMax/{max=$NF}
END {print min" - "max}'
done