String 未指定的字符串替换问题

String 未指定的字符串替换问题,string,shell,String,Shell,我有一个未指定的IP,我想将其第三部分的一部分更改为254,用于任何IP地址,例如 172.16.1.2 -> 172.16.254.2<br/> 192.168.2.6 -> 192.168.254.6<br/> x.x.x.x -> x.x.254.x<br/> 我应该如何使用shell脚本实现这一点?sed是一个经典的解决方案 sed -E -e 's/(.*)[.](.*)[.](.*)[.](.*)/\1.\2.2

我有一个未指定的IP,我想将其第三部分的一部分更改为254,用于任何IP地址,例如

172.16.1.2  -> 172.16.254.2<br/> 
192.168.2.6 -> 192.168.254.6<br/> 
x.x.x.x     -> x.x.254.x<br/>

我应该如何使用shell脚本实现这一点?

sed是一个经典的解决方案

 sed -E -e 's/(.*)[.](.*)[.](.*)[.](.*)/\1.\2.254.\4/'
找到有三个点的东西,然后复制所有东西,第三个点被254替换

然后像这样使用它:

echo a.b.c.d  | sed -E -e 's/(.*)[.](.*)[.](.*)[.](.*)/\1.\2.254.\4/'

感谢您的解决方案,我已经用您的方法解决了这个问题,尽管您的命令在我的计算机上可能不太有效,所以我使用这样的命令:echo 1.2.3.4 | sed-e s/\.\.\[.]\.\[.]\.[.]\.[.]\.\/\1.\2.254.\4/我的计算机上的sed版本是GNU-sed版本4.1.5,它不支持-e选项。谢谢你的帮助!