简体   繁体   English

Sed附加正则表达式捕获组

[英]Sed append regex capture groups

If someone can please assist, I'm trying to do a sed append using regex and capture groups but its not working fully: 如果有人可以请求协助,我正在尝试使用正则表达式和捕获组进行sed追加,但它没有完全正常工作:

echo "#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/" | sed -re '/#baseurl=http:\/\/mirror.centos.org(.*)/a baseurl=https:\/\/10.10.10.10\ \1'
 #baseurl=http://mirror.centos.org/centos//contrib//
 baseurl=https://10.10.10.10 1

At the moment it is just giving the literal value 1 rather than the capture group. 目前它只是给出字面值1而不是捕获组。

It should give: 它应该给:

 #baseurl=http://mirror.centos.org/centos//contrib//
 baseurl=https://10.10.10.10/centos//contrib//

I have tried backslash parentheses as well but its not working. 我也尝试过反斜杠括号,但它不起作用。 Please assist....as it is hurting my head now... 请协助......因为它现在正在伤害我的头脑......

You can only capture back-reference when using s (substitute) command in sed . sed使用s (替换)命令时,您只能捕获反向引用。

This should working: 这应该工作:

s="#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/"    
sed -r 's~#baseurl=http://mirror\.centos\.org(.*)~&\nbaseurl=https://10.10.10.10\1~' <<< "$s"

#baseurl=http://mirror.centos.org/centos//contrib//
baseurl=https://10.10.10.10/centos//contrib//

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM