我正在使用Sed来查找并replace文件中的string。 这是第一次使用它,所以我可能做错了,
我有一个名为“test.properties”的“root”所拥有的文件,我想用“cat”replace“world”。
所以我运行这个命令:
sudo sed s/world/cat/ <test.properties >newtest.properties
它工作的很好,但是当我想写这样的SAME文件:
sudo sed s/world/cat/ <test.properties >test.properties
它说“-bash:test.properties:权限被拒绝”,但我使用“sudo”,为什么被拒绝?
不要运行你试图运行的命令
如果您尝试将输出从sedredirect到同一个文件,则会将其清空,删除所有文件内容。 尝试这样的事情:
sed s/world/cat/ <test.properties >newtest.properties && sudo mv newtest.properties test.properties
由于命令的redirect部分不是通过sudo运行,而是以普通用户身份运行,所以您获取权限被拒绝。
第一个命令的作用是因为你只是读第一个文件并写入你自己的文件,所以你的普通用户可以做到这一点。
sudo sed -is/world/cat/ test.properties