使用sed替换的正则表达式

时间:2019-11-11 13:16:21

标签: regex sed

用sed语法替换包含以下行的yaml(qa.yaml)文件中的文本是什么。

image: "1xxxxxxxxxx.dkr.ecr.eu-west-2.amazonaws.com/abc-zyx-123/prod:a.b.c" 
image2: "1xxxxxxxxxx.dkr.ecr.eu-west-2.amazonaws.com/abc-zyx-456/prod:1.2.3.4" 

现在我要在docker构建期间从yaml文件替换最新版本,即“ 1.2.3”和“ 2.3.4”。我从詹金斯(Jenkins)获取参数值。因此,假设第一个参数是 image ,第二个参数是 image2

我本来可以做,但是这个a.b.c可能会改变,那么这种情况下最好的reg表达式是什么?

RUN sed -i -e "s@\a.b.c/$image" /qa.yaml

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

使用

dfs =[df1,df2,df3,df4,df5,df6,df7]

df8 = reduce(DataFrame.unionAll, dfs)

它将用sed -i "s@[^:][^:]*\$@$image" /qa.yaml 变量中不应包含image字符的文本替换字符串末尾的冒号以外的一个或多个字符。如果存在,请将@替换为@#~,只需确保,中没有这样的字符即可。