我正在尝试创建一个补丁,用户可以使用 sed 以预定义的方式远程编辑文件,我可以在每台计算机上手动执行此操作,但这需要很长时间。
我正在努力解决的问题如下:
host=[hostname]
port=[portnum]
ssh -t $host -p $port "cp ~/file1 ~/file1.bak ; sed -i \"s/fcn1('param1', $2)\n/fcn2('param2'):$zoom\n/g\" ~/file1"
这会备份 file1,然后编辑文件中的一行。我实际上想编辑多行,但这一行说明了问题:该命令有效,前提是 sed 命令中没有使用 $ 符号。
我尝试了多种方法来逃避这些 $ 符号,但似乎找不到一种有效的方法。我可以使用 . 查找中的通配符,但显然不在替换字符串中。
我会为 sed 命令使用单引号,以避免扩展 $2,但在命令中已经使用了单引号。
有没有人对如何克服这个问题有任何想法?在此先感谢您的任何建议!