![如何在两个包含特殊字符的字符串之间插入一个字符串?](https://linux22.com/image/1434810/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%A4%E4%B8%AA%E5%8C%85%E5%90%AB%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B9%8B%E9%97%B4%E6%8F%92%E5%85%A5%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
我正在编写一个脚本来将正确的卫星网址插入到/etc/sysconfig/rhn/up2date
我试图将此命令添加到脚本中:
sed -i 's/https//.*XMLRPC///https servername.com XMLRPC/g' /etc/sysconfig/rhn/up2date
但我得到了:
sed: -e expression #1, char 10: unknown option to `s'
我该如何解决?
答案1
您正在使用/
作为分隔符和作为正则表达式的一部分,不使用任何转义符。Sed 无法区分不同的用途,因此会感到困惑。您可以\
在正则表达式和替换模式中的所有斜杠前使用(反斜杠),但在这种情况下,使用不同的分隔符会更容易。我对您的行也有点困惑,但我的猜测是,使用#
作为 sed 模式分隔符。:
sed -i 's#https//.*XMLRPC#//https servername.com XMLRPC#g' /etc/sysconfig/rhn/up2date