添加-i标志会导致sed抛出错误

添加-i标志会导致sed抛出错误,sed,Sed,我有一个sed命令,如果我让输出发送到stdout,它就可以正常工作 sed s/defaultFedoraColor/grey/ stuff.js 但是,如果我试图通过添加-I标志来就地更改文件 sed -i s/defaultFedoraColor/grey/ stuff.js 我得到的错误消息是 sed: 1: "stuff.js": unterminated substitute pattern 为什么国旗会改变我的替代模式的合法性 -i标志接受一个参数!此参数是用于正在操

我有一个sed命令,如果我让输出发送到stdout,它就可以正常工作

sed  s/defaultFedoraColor/grey/ stuff.js 
但是,如果我试图通过添加-I标志来就地更改文件

sed  -i s/defaultFedoraColor/grey/ stuff.js 
我得到的错误消息是

sed: 1: "stuff.js": unterminated substitute pattern

为什么国旗会改变我的替代模式的合法性

-i
标志接受一个参数!此参数是用于正在操作的文件的备份后缀。(大概,原始文件的备份是用给定的后缀进行的。)因此,您的模式已成为-i的参数,sed试图将“stuff.js”解释为模式

编辑:虽然我根本没有经历过这种错误行为,但阅读手册页会发现这是一个问题


另一个编辑:也许你想简单地按照建议在模式周围添加引号

试试
sed-i's/defaultFedoraColor/grey/'stuff.js
试试在命令周围加引号在模式周围引号对我来说并没有解决问题我正在运行os x 10.7.5,但是添加了
sed-i's/defaultFedoraColor/grey/stuff.js确实是为了好玩才修复它的,在ubuntu上添加“”会破坏命令…这确实修复了它。手册页上说你可以输入一个“零长度”的扩展名。我读到,如果将其留空,实际上需要执行
sed-I's/default/gray stuff.js