如何使用 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”。请注意我如何使用 ':' 作为 sed 命令的分隔符s,以便我可以使用未转义的 '/'。


或者一直使用 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}'

相关内容