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

私も正規表現の文字な?ので変更しました。ここでは何の違いもありませんが、式を解析しようとしたときにしばらく混乱しました。#?

関連情報