2011-10-27 4 views
14

私はエラーが発生しています:sedのコマンドの動作

sed: 1: "s/(\tpublic function __ ...": \1 not defined in the RE 

だから、LinuxとOS Xの両方で動作するコマンドを作成する手助けができますか?ところで

は、私のようなコマンドを試してみました:

sed -i '' -r "s/(\tpublic function __call.*)/\1\n\t\treturn null;/" rb.php 

が、それはLinux上で動作しません。

答えて

28

Mac OS X sedの場合は、-rの代わりに-Eを使用してEREを取得してください。さらに、GNU拡張は存在しないので、\t\nメタ文字の代わりにリテラル文字が必要です。

もちろん、GNU sedをインストールするだけです。

0

私は-Eを追加すると両方のために動作するようになると思います。

+0

必要だが十分ではない、私は恐れている。 –

1

(は、sedではなく、perlでは標準です。代わりに\(を使用してください。 Mac OS XはGNU sedを使用しません。

+0

'-r'は拡張正規表現のフラグです。だから私たちはエスケープする必要はない '(' –

+0

'-r'は[Appleのsedのmanページ]には書かれていません(http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/ man1/sed.1.html)。 – mouviciel

+0

おそらくGNUのものです。 –

関連する問題