Linux 将ip范围列表转换为cidr

Linux 将ip范围列表转换为cidr,linux,awk,grep,Linux,Awk,Grep,我有这样的结构文件: 08.176.250.200-108.176.250.219 108.176.251.40-108.176.251.163 108.176.254.212-108.176.254.215 108.176.254.216-108.176.255.87 108.177.224.0-108.177.225.255 108.179.0.32-108.179.0.87 108.179.0.192-108.179.0.255 108.179.4.0-108.179.4.255 108.

我有这样的结构文件:

08.176.250.200-108.176.250.219
108.176.251.40-108.176.251.163
108.176.254.212-108.176.254.215
108.176.254.216-108.176.255.87
108.177.224.0-108.177.225.255
108.179.0.32-108.179.0.87
108.179.0.192-108.179.0.255
108.179.4.0-108.179.4.255
108.179.13.0-108.179.13.255
108.179.18.0-108.179.18.15
108.179.18.16-108.179.19.255
108.179.25.0-108.179.25.255
108.179.32.16-108.179.33.255
108.179.42.64-108.179.42.255
如何将它们转换为cidr并保存到新文件?

您可以使用从IP范围计算
cidr

~/test$ ipcalc -rn 108.179.42.64-108.179.42.255
deaggregate 108.179.42.64 - 108.179.42.255
108.179.42.64/26
108.179.42.128/25
下面将计算文件每行的IP范围(
IP.txt
),并将其存储在
cidr.txt

awk '{system("ipcalc -rn "$1 "| tail -n +2")}' ip.txt > cidr.txt
或使用
xargs

<ip.txt  xargs -I '{}' bash -c 'ipcalc -rn {} | tail -n +2' > cidr.txt
cidr.txt

Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另请参见您是否确定
ipcalc-rn
东西的语法正确?因为我这里有错误
ipcalc:bad IPv4前缀:n
,从man-ipcalc的文档来看,这个参数不用于计算范围是很奇怪的,但它说:
-r,--random private=prefix使用|-n,--network Display network address
生成一个随机的专用IP网络。我认为这不是一个有效的选择。你怎么可能得到那样的结果。你的ipcalc版本是什么。