将sed的输出重定向到文件时,sudo不起作用

时间:2012-10-30 15:01:14

标签: shell unix

  

可能重复:
  How do I use sudo to redirect output to a location I don’t have permission to write to?

假设我要更改一个位于/ home的文件“foo”,对其应用一些正则表达式(通过 sed ),并将结果放在名为/ home / foo2的文件中

我既没有对/ home或foo的读/写访问权限,所以我使用 sudo 。但是,我仍然获得了拒绝许可

sudo sed "s/bar/baz/" <foo >foo2
bash: foo2: Permission denied

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:4)

使用“就位”选项-i。你的语法是:

sed -i [pattern] filename

答案 1 :(得分:1)

虽然sh通常可能不是一个坏主意,但这将为您的shell创建一个新文件foo2的权限:

sudo sh -c "sudo sed 's/bar/baz/' <foo >foo2"