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

shell脚本中对sed命令的求助
直接这么说吧,当前有一个文件a,a里面有path=/opt/aaa/bbb/ccc/d.txt。现在我要写一个shell脚本b.sh来将a里面的path=/opt/aaa/bbb/ccc/d.txt改成path=/opt/aaa/eee/fff/g.txt,
同时在脚本中有一变量path_pwd="/opt/aaa/xxx/yyy/zzz",而且必须要用到path_pwd变量。
如果不要用path_pwd变量,那我会写
sed -i "s#path=/opt/aaa/bbb/ccc/d.txt#path=/opt/aaa/eee/fff/g.txt#" a
但是用到path_pwd变量,我写成
sed -i "s#path=\\S*#path=$path_pwd/../../../eee/fff/g.txt#" a,可是在执行脚本之后将a文件里的path=/opt/aaa/bbb/ccc/d.txt
替换成了path=/opt/aaa/xxx/yyy/zzz/../../../eee/fff/g.txt,虽然这样也能定位到g.txt文件,但是要求里面不要有xxx/yyy/zzz/../../../。
求高人伸只援手

------解决方案--------------------
分成2步做,第一步是你那样的,第二步再吧XXX/YYY/ZZZ去掉
------解决方案--------------------
sed -i "s#path=\\S*#path=${path_pwd%/*/*/*}/eee/fff/g.txt#" a