从该ip addr
命令中,我获得了 类型的子网地址,192.168.0.1/24
但该ip route
命令需要类型为 的子网地址192.168.0.0/24
。
如果我尝试使用sed -E 's/(?<=\d.)1(?=\/)/0/g'
将最后一个“1”更改为“0”,则会收到错误:sed: -e expression #1, char 21: Invalid preceding regular expression
答案1
问题是 sed 不支持 PCRE 语法。试试这个 GNU sed 片段:
sed -r 's:([0-9]\.)[0-9]{1,3}/:\10/:g'
如果-r
不接受,请使用-E
.
答案2
我最终使用 Perl 而不是 sed,因为 sed 不支持前向和后向,正如@seshoumara 指出的那样。
ip -o -f inet addr show eth0 | awk '/scope global/ {print $4}' | perl -ne 's/(?<=\d.)\d{1,3}(?=\/)/0/g; print;'