次のように可能な/有効なネットワークアドレスになる可能性がある文字列があるとします。
STR="192.168.1.0/24"
私がしたいのは、最後のオクテット(この場合は0/24、しかし任意の数字かもしれません)を数字2に置き換えることです。しかし、最後のオクテットが何であるかわかりません(新しい値は印刷されません)。 )、したがって、次のように変更します。
192.168.1.0/24
到着する:
192.168.1.2
ネットワークアドレスが何であれ、最後のオクテットを「2」に変更したいと思います。
注:テスト中のすべての文字列は有効なネットワークアドレスと見なされるため、文字列が有効なネットワークアドレスであることを確認することは重要ではありません。
答え1
端末では、次のように動作します。
echo "192.168.1.0/24" | sed -n 's/0.24/2/p'
スクリプトでは、次のように動作します。
str="192.168.1.0/24"
newstr=$(sed -n 's/0.24/2/p' <<<$str)
IPアドレスの最後の数字を置き換えるには:
str="192.111.12.20"
newstr=$(awk -F"." '{print $1"."$2"."$3".2"}'<<<$str)
echo $newstr