sed在l命令末尾添加额外字符
我正在尝试用cshell中的sed替换配置文件中的值 但是它给了我一个错误:sed在l命令末尾添加额外字符,sed,freebsd,Sed,Freebsd,我正在尝试用cshell中的sed替换配置文件中的值 但是它给了我一个错误: sed: 1: "/usr/local/etc/raddb/mo ...": extra characters at the end of l command 我正在尝试以下命令: sed -i "s/private_key_password = .*/private_key_password = test/" /usr/local/etc/raddb/mods-available/eap 我已经看过sed的例子,
sed: 1: "/usr/local/etc/raddb/mo ...": extra characters at the end of l command
我正在尝试以下命令:
sed -i "s/private_key_password = .*/private_key_password = test/" /usr/local/etc/raddb/mods-available/eap
我已经看过sed的例子,但它们看起来都与我正在做的相似,这里出了什么问题?FreeBSD sed需要在
-I
之后加一个参数才能将原始文件重命名为。例如,sed-i.orig的/../../'文件
将原始文件重命名为file.orig
,并将修改后的文件保存到文件
这与GNUsed
不同,后者不需要-i
标志的参数。有关完整文档,请参阅。这是对的有用扩展之一,不幸的是,它的实现不一致
现在,“s/private\u key\u password=.*/private\u key\u password=test/”
部分被解释为-i
的参数,而/usr/local/etc/raddb/mods available/eap
被解释为命令。因此出现了错误
因此,您要使用:
sed -i .orig "s/private_key_password = .*/private_key_password = test/" /usr/local/etc/raddb/mods-available/eap
然后,您可以检查更改是否符合
diff
的要求,并删除/usr/local/etc/raddb/mods available/eap.orig
,如果可以的话。您使用哪个操作系统和sed版本?FreeBSD,sed版本我不知道如何获取。