Bash
轉換IP的更好方法?
我正在嘗試轉換
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
,那麼您可以使用new_ip=${ip_main%?.*}2.252
$ip_main
這會從匹配項中刪除最短的後綴字元串?.*
,然後附加2.252
到結果中。用這種模式替換總是會影響第三個八位字節的最後一位,第三個和第四個八位字節之間的點,然後是整個第四個八位字節。測試:
$ ip_main=10.AB.C9.XYZ $ new_ip=${ip_main%?.*}2.252 $ printf '%s\n' "$new_ip" 10.AB.C2.252