我正在尝试转换10.AB.C9.XYZ
为10.AB.C2.252
.
现在我正在提取每个字符并将它们拼凑在一起。
ip_main=10.AB.C9.XYZ
A_char=${ip_main:3:1}
B_char=${ip_main:4:1}
C_char=${ip_main:6:1}
new_ip="10.${A_char}${B_char}.${C_char}2.252"
有没有更好的方法来实现这一点?
我正在尝试转换10.AB.C9.XYZ
为10.AB.C2.252
.
现在我正在提取每个字符并将它们拼凑在一起。
ip_main=10.AB.C9.XYZ
A_char=${ip_main:3:1}
B_char=${ip_main:4:1}
C_char=${ip_main:6:1}
new_ip="10.${A_char}${B_char}.${C_char}2.252"
有没有更好的方法来实现这一点?
如果您只想用 替换第三个八位字节的最后一位和第四个八位字节的整个数字
2.252
,那么您可以使用$ip_main
这会从匹配项中删除最短的后缀字符串?.*
,然后附加2.252
到结果中。用这种模式替换总是会影响第三个八位字节的最后一个数字,第三个和第四个八位位组之间的点,然后是整个第四个八位位组。测试:
您可以从第三个八位字节中减去 7,然后替换第四个:
如果您有要更改的 IP 地址列表,此过程将最有效。
与
sed
: