Eld*_*kov 6 unix bash terminal sed
我正在尝试使用 sed 添加一个文件,但我不断收到此错误消息
sed: 1: "test.txt": undefined label 'est.txt'
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的命令
Desktop > sed -i 's/White/Black/' test.txt
Run Code Online (Sandbox Code Playgroud)
我不确定我在这里做错了什么......任何帮助将不胜感激!提前致谢!
的某些版本sed需要 的参数-i。尝试:
sed -i.bak 's/White/Black/' test.txt
Run Code Online (Sandbox Code Playgroud)
或者(仅限 OSX/BSD),
sed -i '' 's/White/Black/' test.txt
Run Code Online (Sandbox Code Playgroud)
如您所知,-i告诉sed就地编辑。用于备份原始文件的扩展名的参数。参数是空字符串,您sed可能不会保留备份文件。
GNUsed不需要为-i. BSD sed( Mac OSX ) 确实如此。
考虑以下命令:
sed -i 's/White/Black/' test.txt
Run Code Online (Sandbox Code Playgroud)
如果您sed需要对 的参数-i,那么它会相信那s/White/Black/是那个参数。因此,它认为下一个参数test.txt是sed它应该执行的命令。这将被解释为“测试”命令t,目的是est.txt在测试为真时跳转到标签。没有定义这样的标签。因此错误消息:
sed: 1: "test.txt": undefined label 'est.txt'
Run Code Online (Sandbox Code Playgroud)
ThatOtherGuy 报告说,以下内容将在所有平台上运行而不会出错:
sed -i -e 's/White/Black/' test.txt
Run Code Online (Sandbox Code Playgroud)
ThatOtherGuy 指出,该行的行为取决于平台。使用 BSD sed,它会创建一个带有-e扩展名的备份文件。使用 GNU sed,不会创建备份。