sed:-e表达式#1,char 66:s'的未知选项

时间:2017-11-07 11:44:03

标签: sed

我的变量颁发者主题包含

  

发行者= C = IN,ST = TN,L = XYZ,O = ABC,OU = CA,CN = XYZ.com / EMAILADDRESS = XYZ @的Gmail   受试者= C = GB,ST =伦敦,L =伦敦,O = Global_Security,OU = IT,CN = example.comCA / EMAILADDRESS = ACL @ 123

我想分别用 xyz.conf 中的 subject issuer 替换变量leftidleftca

我正在使用像这样的sed命令

sed -i -e '/leftid=/s/=.*/= '$subject'/' /etc/xyz.conf

sed -i -e '/leftca=/s/=.*/= '$issuer'/' /etc/xyz.conf

但我收到以下错误

  

sed:-e表达式#1,字符66:s' sed: -e expression #1, char 83: unknown option to s'

的未知选项

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的$issuer变量在sed替换部分中展开,因此表达式变为:

sed -i -e '/leftca=/s/=.*/= 'C=IN,ST=TN,L=XYZ,O=ABC,OU=CA,CN=XYZ.com/emailAddress=xyz@gmail'/' /etc/xyz.conf

并且这不是正确的sed表达式,因为/分隔符有4次出现。

总结你的sed命令是正确的,只需用你的issuer变量中不存在的东西来改变s替换命令分隔符,例如:

sed -i -e '/leftid=/ s|=.*|= '$subject'|' /etc/xyz.conf