【发布时间】:2023-04-02 14:35:01
【问题描述】:
我有一个带有 cidr 格式 IP 地址的文本文件。每行一个 cidr。如何将 cidrs 转换为 IP 范围,即开始 IP - 结束 IP。每行一个 IP 范围。请注意两边的空格 - .
【问题讨论】:
-
您应该给出一些示例行,以便 awk/sed 专家可以在不知道 cidr 的情况下找出解决方案。
我有一个带有 cidr 格式 IP 地址的文本文件。每行一个 cidr。如何将 cidrs 转换为 IP 范围,即开始 IP - 结束 IP。每行一个 IP 范围。请注意两边的空格 - .
【问题讨论】:
你最好使用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
循环文件的简单脚本:
#!/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
【讨论】: