[英]Replace a text in a variable using sed or awk
I have a variable with the value as below,我有一个变量,其值如下,
var1="heritage=external-dns,external-dns/owner=us-east-1:testapp-sandbox,external-dns/resource=ingress/monitoring/prometheus-operator-grafana"
var2=us-east-1:testapp-dev
I want to replace only the text between owner= and ,external-dns which is us-east-1:testapp-sandbox with the content from var2.我只想用 var2 中的内容替换owner=和,external-dns之间的文本,即us-east-1:testapp-sandbox 。
So I am expecting output as below,所以我期待 output 如下,
var1_updated="heritage=external-dns,external-dns/owner=us-east-1:testapp-dev,external-dns/resource=ingress/monitoring/prometheus-operator-grafana"
I tried this, sed -i 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' value.txt
but its throwing me error as invalid command code v我试过这个,
sed -i 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' value.txt
但它给我的错误是无效的命令代码v
Please let me know how to do this using sed or awk...请让我知道如何使用 sed 或 awk...
Your command is close to valid, just use extented regex with -E
switch:您的命令接近有效,只需使用带有
-E
开关的扩展正则表达式:
sed -E 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' <<< "$var1"
Now using variable:现在使用变量:
sed -E "s/(owner=).*(,external-dns)/\1$var2\2/g" <<< "$var1"
Note that double quotes are mandatory here for shell to expand variables请注意,此处必须使用双引号 shell 来扩展变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.