shell脚本中对sed命令的求助

cengjing007 2013-12-05 07:20:51
直接这么说吧,当前有一个文件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/../../../。
求高人伸只援手
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljc007 2013-12-09
  • 打赏
  • 举报
回复
引用 3 楼 cengjing007 的回复:
我已经想到了别的方法了,但看起来你这种方法要更加的好,不过我也懒得去改了
请点击左上角“结帖”按钮
cengjing007 2013-12-09
  • 打赏
  • 举报
回复
引用 1 楼 Mr_Ringht 的回复:
分成2步做,第一步是你那样的,第二步再吧XXX/YYY/ZZZ去掉
这样做貌似不行哦,应为xxx/yyy/zzz是前面变量$path_pwd中的字符串。值是会变的,xxx/yyy/zzz也会跟着变,要是在shell中写死了很定不行啊
cengjing007 2013-12-09
  • 打赏
  • 举报
回复
引用 2 楼 ljc007 的回复:
sed -i "s#path=\\S*#path=${path_pwd%/*/*/*}/eee/fff/g.txt#" a
我已经想到了别的方法了,但看起来你这种方法要更加的好,不过我也懒得去改了
ljc007 2013-12-06
  • 打赏
  • 举报
回复
sed -i "s#path=\\S*#path=${path_pwd%/*/*/*}/eee/fff/g.txt#" a
linux-c 2013-12-06
  • 打赏
  • 举报
回复
分成2步做,第一步是你那样的,第二步再吧XXX/YYY/ZZZ去掉

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧