有効なネットワークアドレスの最後のオクテットを数字2に置き換える方法[重複]

有効なネットワークアドレスの最後のオクテットを数字2に置き換える方法[重複]

次のように可能な/有効なネットワークアドレスになる可能性がある文字列があるとします。

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

関連情報