sedを使用して最後の値(IPアドレス)を変更する方法

sedを使用して最後の値(IPアドレス)を変更する方法

次のコマンドラインを使用して現在のIPアドレスを読みます。次に、最後の値を0/24に置き換える必要があります。現在のIPは192.168.178.1です。 192.168.178.0/24のvar値を変更する必要があります。

ご支援とよろしくお願いします!

 varip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/' )

答え1

最後に、次のsedコードを使用してください。

sed 's:[^.]*$:0/24:'

「.」を含まない最後の部分文字列を「0/24」に置き換える方法で動作します。sエスケープされていない '/' を使用できるように、sed コマンドの区切り文字として ':' を使用する方法に注意してください。


または常にsedを使用してください:)

ip addr | sed -rn '/state UP/{n;n;s:^ *[^ ]* *([^ ]*).*:\1:;s:[^.]*$:0/24:p}'

答え2

この試み:

ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/' | sed 's/\.[0-9]*$/\.0\/24/'

しかし、必ずしもそうする必要はありません。cut次に変えてください。sed

ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | sed 's/\.[0-9]*\//\.0\//'

このコマンドは同じ出力を返します。

そしてそれは必要ありません。tailまた、次のように変更してください。sed

ip addr | grep 'state UP' -A2 | awk '{print $2}' | sed '$!d;s/\.[0-9]*\//\.0\//'

しかし、最短ルート使用することですhostname

hostname -I | tr -d " " | sed 's/[0-9]*$/0\/24/'

出力は同じです。

答え3

Your-IP-Adress/24 を取得するには、次のコマンドを使用します。

ip addr | grep inet | egrep /24 | awk '{print $2}'

答え4

ただawkを使用してください:

ip a | awk '/state UP/{nr[NR+2]}; NR in nr {gsub(/\.([0-9]+)\/([0-9]+)/,".0/24"); print $2}'

関連情報