Sed 附加正则表达式捕获组
Sed append regex capture groups
如果有人可以提供帮助,我正在尝试使用正则表达式和捕获组进行 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\ '
#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~' <<< "$s"
#baseurl=http://mirror.centos.org/centos//contrib//
baseurl=https://10.10.10.10/centos//contrib//
如果有人可以提供帮助,我正在尝试使用正则表达式和捕获组进行 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\ '
#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~' <<< "$s"
#baseurl=http://mirror.centos.org/centos//contrib//
baseurl=https://10.10.10.10/centos//contrib//