使用 sed 的远程 SSH 命令不起作用

使用 sed 的远程 SSH 命令不起作用

在远程服务器中,我可以运行此命令:

sed -i '/address/c\address xx.xx.xx.xx' /myfile

替换address包含address xx.xx.xx.xx以下内容的任何行:/myfile

但是,从我的本地机器上看,这个命令不起作用

ssh root@ip sed -i '/address/c\address xx.xx.xx.xx' /myfile

它给出了以下错误:

sed: can't read xx.xx.xx.xx: No such file or directory

如何解决这个问题?

答案1

您正在阻止在本地 shell 上扩展,但您需要保留要运行的命令的所有内容(sed在本例中,在两个 shell 上都是如此)。

引用sed命令运行:

ssh root@ip "sed -i '/address/c\address xx.xx.xx.xx' /myfile"

本质上,任何引用当前的方法都可以,但使用像上面那样的双引号会更简单、更干净。

答案2

要替换,您应该按以下方式使用 sed:

sed -i 's/^.*address/address xx.xx.xx.xx/' yourfile

该正则表达式应该在您的文件中找到“地址”并将其替换为“地址 xx.xx.xx.xx”。

相关内容