带有 sed 和特殊字符的 pssh

带有 sed 和特殊字符的 pssh

我想运行这个 sed:

sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename

但在使用 pssh 运行时失败,并退出并显示错误代码 1:

pssh -h /root/listofservers -l root -A "sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename"

答案1

pssh有以下用法概要:

pssh [options] command ...

也就是说,不要引用要在远程主机上执行的命令(否则它将把整个引用的命令视为命令上的名称)。此外,单引号字符串是静态的,如sed表达式。

建议:

pssh -h /root/listofservers -l root -A sed 's#\(Defaults.*\)#\1:/etc/bla/foo/#' filename

我也改成了?since#?正则表达式字符。它在这里不会产生任何影响,但当我尝试解析该表达式时,它让我短暂地感到困惑。

相关内容