sed: -e 表达式 #1, char 66: s' 的未知选项 [英] sed: -e expression #1, char 66: unknown option to s'
问题描述
我的变量issuer 和subject 包含
颁发者=C=IN,ST=TN,L=XYZ,O=ABC,OU=CA,CN=XYZ.com/emailAddress=xyz@gmailsubject=C=GB,ST=London,L=London,O=Global_Security,OU=IT,CN=example.comCA/emailAddress=acl@123
issuer=C=IN,ST=TN,L=XYZ,O=ABC,OU=CA,CN=XYZ.com/emailAddress=xyz@gmail subject=C=GB,ST=London,L=London,O=Global_Security,OU=IT,CN=example.comCA/emailAddress=acl@123
我想在 xyz 中用 subject 和 issuer 替换变量 leftid
和 leftca
.conf 分别.
I want to replace a variable leftid
and leftca
with subject and issuer in xyz.conf respectively.
我正在使用这样的 sed 命令
I'm using sed command like this
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表达式 #1,字符 83:
s'
sed: -e expression #1, char 66: unknown option to
s' sed: -e expression #1, char 83: unknown option to
s'
有人可以帮忙吗?
推荐答案
你的 $issuer
变量在 sed 替换部分被扩展,所以表达式变成:
Your $issuer
variable is expanded in the sed substitution part and so the expression becomes:
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 次.
and this is not a correct sed expression since there is 4 occurrences of the /
delimiter.
总而言之,您的 sed 命令是正确的,只需使用发行者变量中不存在的内容更改 s 替换命令分隔符,例如:
To sum up your sed command is right just change the s substitution command separator with something not present in your issuer variable, like for instance:
sed -i -e '/leftid=/ s|=.*|= '$subject'|' /etc/xyz.conf
这篇关于sed: -e 表达式 #1, char 66: s' 的未知选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!