需要帮助使用sed编辑文件

时间:2014-11-14 21:59:20

标签: bash unix sed terminal

我正在尝试使用sed添加一个文件,我不断收到此错误消息

sed: 1: "test.txt": undefined label 'est.txt'

这是我正在使用的命令

Desktop > sed -i 's/White/Black/' test.txt

我不确定我在这里做错了什么......任何帮助都会非常感激!提前谢谢!

1 个答案:

答案 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 sedMac 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,不会创建备份。