Ole*_*sii 10 command-line bash networking
我有一个带有 IPv4 地址的输入文件:
94.228.16.0 - 94.228.25.255
94.241.136.0/24
94.241.136.0 - 94.241.136.255
94.29.128.0/17
94.29.128.0 - 94.29.191.0
94.29.192.0 - 94.29.255.0
94.74.181.0/24
94.74.181.0 - 94.74.181.31
94.74.181.128 - 94.74.181.255
Run Code Online (Sandbox Code Playgroud)
如何将地址范围转换为网络掩码?结果应该是:
94.228.16.0/21
94.241.136.0/24
94.241.136.0/24
94.29.128.0/17
94.29.128.0/19
94.29.192.0/19
94.74.181.0/24
94.74.181.0/27
94.74.181.128/25
Run Code Online (Sandbox Code Playgroud)
Zan*_*nna 14
首先,您需要安装一个包来进行转换
sudo apt install ipcalc
Run Code Online (Sandbox Code Playgroud)
现在你可以用这个小脚本来完成(请注意,如果你引用变量,它就不起作用):
$ while read line; do if [[ $line = *-* ]]; then (ipcalc $line | sed '2!d'); else echo $line; fi; done < file
94.228.16.0/21
94.241.136.0/24
94.241.136.0/24
94.29.128.0/17
94.29.128.0/19
94.29.192.0/19
94.74.181.0/24
94.74.181.0/27
94.74.181.128/25
Run Code Online (Sandbox Code Playgroud)
或更易读
while read line; do
if [[ $line = *-* ]]; then
(ipcalc $line | sed '2!d')
else echo $line
fi
done < file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2533 次 |
| 最近记录: |