首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed替换包含“/”的整行匹配字符串,用另一个字符串替换空格

sed替换包含“/”的整行匹配字符串,用另一个字符串替换空格
EN

Stack Overflow用户
提问于 2019-10-15 15:07:14
回答 1查看 39关注 0票数 0

我正在努力解决这个问题,并尝试了多个答案(谷歌/堆栈溢出)。

使用bash脚本,我想用image: quay.io/repo/someimage:newtag替换:image: quay.io/repo/someimage:newtag

铭记以下各点:

  1. 在“图像”前面有前导空格,我不想丢失。
  2. ,我没有旧的图像标签名,所以我不能只是替换标签。

我的shell脚本类似于:

代码语言:javascript
复制
TEXT="image: quay.io/repo/someimage:"
TEXT_NEW="image: quay.io/repo/someimage:${TAG}"
sed -i "s|$TEXT .*$|$TEXT_NEW|g" "docker-compose.yml"

我在这里尝试过多种方法,但没有一种起作用或部分起作用:这确实部分起作用,但出于某种原因,它只是将新标记附加到旧标记上。并不能取代它。

代码语言:javascript
复制
sed -i -e "s|image: quay.io/repo/someimage:*| image: quay.io/repo/someimage:${TAG}|g" docker-compose.yml

这会引发一个错误。我猜是因为'/‘。

代码语言:javascript
复制
sed -i "/image: quay.io/repo/someimage:/c image: quay.io/repo/someimage:${TAG}" docker-compose.yml
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-16 18:33:13

很傻,但空间是问题所在:

代码语言:javascript
复制
sed -i -e "s|$TEXT.*|$TEXT_NEW|g" docker-compose.yml 

谢谢@Beta的评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58397752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档