Sed追加正则表达式捕获组 [英] Sed append regex capture groups

查看:163
本文介绍了Sed追加正则表达式捕获组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果有人可以提供帮助,我正在尝试使用正则表达式和捕获组执行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 

目前,它只是给文字值1而不是捕获组.

它应该给出:

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

我也尝试了反斜杠括号,但是它不起作用.请协助....因为它现在伤了我的头...

解决方案

仅当在 sed 中使用 s (替代)命令时,才能捕获向后引用.>

这应该有效:

  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// 

If someone can please assist, I'm trying to do a sed append using regex and capture groups but its not working fully:

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.

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.

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//

这篇关于Sed追加正则表达式捕获组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆