sed: -e 表达式 #1, char 66: s' 的未知选项 [英] sed: -e expression #1, char 66: unknown option to s'

查看:79
本文介绍了sed: -e 表达式 #1, char 66: s' 的未知选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的变量issuersubject 包含

颁发者=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 中用 subjectissuer 替换变量 leftidleftca.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 tos'

有人可以帮忙吗?

推荐答案

你的 $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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆