cidr converter using sed or awk

2020-04-16 17:55发布

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 - .

标签: awk sed ip cidr
1条回答
爷的心禁止访问
2楼-- · 2020-04-16 18:02

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
查看更多
登录 后发表回答