在远程服务器中,我可以运行此命令:
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”。