向字符串添加值

向字符串添加值

我有一个很大的 bash 文件,其中有很多这样的行:

... --env COMP_LABELS="service:service1" ...

其中 service1 每行都不同。 (有时是service:mgmtservice:admin)。

我正在尝试生成一些命令(可能是 sed),该命令会在结束引号 ( ") 之前附加以下字符串:,branch:$branch

所以在第一个例子中,它会变成:

... --env COMP_LABELS="service:service1,branch:$branch" ...

可以做吗?先谢谢了!

(我尝试做类似的事情sed -i 's/OMP_LABELS=\"service:.*\"/<not sure what to put here since I need to the entire word>/g' filename,但我不知道如何完成)

答案1

"使用 sed,您可以简单地匹配第一个之后的一系列非字符"

$ echo '... --env COMP_LABELS="service:service1" ...' | 
    sed 's/COMP_LABELS="[^"]*/&,branch:$branch/'
... --env COMP_LABELS="service:service1,branch:$branch" ...

这里/COMP_LABELS="[^"]*/匹配字符串COMP_LABELS="后跟 0 个或多个非"字符(^是否定运算符),然后/&,branch:$branch/将其替换为 LHS 上匹配的内容(&是反向引用),后跟字符串,branch:$branch

相关内容