我正在尝试使用sed添加一个文件,我不断收到此错误消息
sed: 1: "test.txt": undefined label 'est.txt'
这是我正在使用的命令
Desktop > sed -i 's/White/Black/' test.txt
我不确定我在这里做错了什么......任何帮助都会非常感激!提前谢谢!
答案 0 :(得分:3)
sed
的某些版本需要-i
的参数。尝试:
sed -i.bak 's/White/Black/' test.txt
或(仅限OSX / BSD),
sed -i '' 's/White/Black/' test.txt
如您所知,-i
告诉sed
进行适当的编辑。用于备份原始文件的扩展名的参数。参数是空字符串,您的sed
可能不会保留备份文件。
GNU sed
不需要-i
的参数。 BSD sed
(Mac OSX)确实如此。
考虑命令:
sed -i 's/White/Black/' test.txt
如果您的sed
需要-i
的参数,那么它会认为s/White/Black/
就是那个参数。因此,它认为下一个参数test.txt
是它应该执行的sed
命令。这将被解释为"测试"命令t
,如果测试为真,则跳转到标签est.txt
。没有定义这样的标签。因此错误消息:
sed: 1: "test.txt": undefined label 'est.txt'
ThatOtherGuy报告以下内容将在所有平台上正常运行:
sed -i -e 's/White/Black/' test.txt
ThatOtherGuy注意到此行的行为是platform- 依赖。使用BSD sed
,它会创建一个扩展名为-e
的备份文件。使用GNU sed
,不会创建备份。