7

誰かが助けてくれれば、正規表現とキャプチャグループを使用して 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//

バックスラッシュの括弧も試しましたが、うまくいきません。助けてください....今頭が痛いので...

4

1 に答える 1

7

sで (substitute) コマンドを使用する場合にのみ、後方参照をキャプチャできますsed

これは機能するはずです:

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//
于 2016-08-23T14:26:29.333 に答える