Bash

轉換IP的更好方法?

  • June 24, 2022

我正在嘗試轉換10.AB.C9.XYZ10.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

引用自:https://unix.stackexchange.com/questions/707393