日期:2014-05-16  浏览次数:20587 次

hp-ux 下要修改一个配置文件中的ip地址,要如何用脚本实现
[b]hp-ux 下要修改一个配置文件中的ip地址,要如何用脚本实现,已知那个ip地址所在的行,ip地址可能每次发环境都会不同,需要修改成我本机的ip

------解决方案--------------------
除非制定-n,否则sed会把不匹配的行直接打印出来,匹配的行则按你的命令处理。所以你可以先重定向到一个临时文件,再删除原始文件,再把临时文件重命名回来。

你说的可以用正则表达式模式匹配替换来做。不过这个看你的具体情况:

如果每一行只可能有一个<env_svr_host>对,比较简单;sed -e 's/<ENV_SVR_HOST>.*<ENV_SVR_HOST>/<ENV_SVR_HOST>10.71.103.71<ENV_SVR_HOST>/g'
如果有多个配对,可以参考这个帖子http://topic.csdn.net/u/20090908/21/57d9f824-ddd3-4c11-992c-398c6227ea29.html;
如果一个<env_svr_host>对可能不出现在同一行,就必须写sed脚本了,因为sed只能一行一行的处理,参考http://topic.csdn.net/u/20090812/07/1b63b0c7-a908-4824-9adb-c72d7565ea6b.html 

可以解决所有情况的思路是,首先把整个文件写到sed的缓冲里,就是变成一行(当然要保持换行符);然后按非贪婪匹配处理<ENV_SVR_HOST>配对。