我想用 sed 替换字符串并将更改保存到需要 sudo 作为根拥有的文件的同一文件。
但在这样做时我遇到了以下错误
raja@raja-UbuntuVM:~$ sudo sed 's|gateway 192.168.56.1| |g' /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
iface eth1 inet static
address 192.168.56.102
netmask 255.255.255.0
-bash: syntax error near unexpected token `newline'
raja@raja-UbuntuVM:~$ sudo sed 's|gateway 192.168.56.1| |g' /etc/network/interfaces > /etc/network/interfaces
-bash: /etc/network/interfaces: Permission denied
答案1
sudo sed 's|gateway 192.168.56.1| |g' /etc/network/interfaces > /etc/network/interfaces
这会失败,因为您当前的(非)shell 尝试在执行之前sudo
打开该interfaces
文件。sudo
要解决此问题,请使用-i
以下的(就地编辑)选项sed
:
sudo sed -i 's|gateway 192.168.56.1| |g' /etc/network/interfaces
同时编辑和替换文件。