我有一个值如下的变量,
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我只想用来自us-east-1:testapp-sandbox的内容替换owner=和之间的文本,外部dns是var2。
所以我预计产出如下,
var1_updated="heritage=external-dns,external-dns/owner=us-east-1:testapp-dev,external-dns/resource=ingress/monitoring/prometheus-operator-grafana"我尝试过这样做,sed -i 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' value.txt,但它将错误抛出为无效的命令代码v。
请让我知道如何使用sed或awk.
发布于 2020-06-17 21:57:51
您的命令接近有效,只需在-E开关中使用扩展正则表达式:
sed -E 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' <<< "$var1"现在使用变量:
sed -E "s/(owner=).*(,external-dns)/\1$var2\2/g" <<< "$var1"请注意,对于shell展开变量,双引号在这里是必需的。
https://stackoverflow.com/questions/62438769
复制相似问题