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

sed:-e表达式#1,字符66:s'的未知选项;,sed,Sed,我的变量和主题包含 issuer=C=IN,ST=TN,L=XYZ,O=ABC,OU=CA,CN=XYZ.com/emailAddress=xyz@gmail 主题=C=GB,ST=London,L=London,O=Global_Security,OU=IT,CN=example.comCA/emailAddress=acl@123 我想用xyz.conf中的subject和issuer分别替换变量leftid和leftca 我使用sed命令,就像这样 sed -i -e '/leftid=/

我的变量和主题包含

issuer=C=IN,ST=TN,L=XYZ,O=ABC,OU=CA,CN=XYZ.com/emailAddress=xyz@gmail 主题=C=GB,ST=London,L=London,O=Global_Security,OU=IT,CN=example.comCA/emailAddress=acl@123

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

我使用sed命令,就像这样

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

但是我得到了以下错误

sed:-e表达式#1,字符66:
s的未知选项sed:-e
表达式#1,字符83:未知的
s选项


有人能帮忙吗?

您的
$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命令是正确的,只需将s substitution命令分隔符更改为issuer变量中不存在的内容,例如:

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

为sed s命令选择不属于字符串一部分的分隔符。两个字符串都有。这是否回答了你的问题?
sed -i -e '/leftid=/ s|=.*|= '$subject'|' /etc/xyz.conf