sed 和 sudo 以及字符串替换

sed 和 sudo 以及字符串替换

我想用 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

同时编辑和替换文件。

相关内容