Sed命令适用于Linux,但不适用于OS X

我在Linux上使用这个sed命令来修补一个文件,它工作正常:

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

但是,当我在OS X上尝试这个命令,我得到一个错误:

 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上不起作用。

对于Mac OS X sed,使用-E而不是-r来获取ERE。 另外,GNU扩展不在那里,所以你需要文字字符而不是\t\n元字符。

当然,或者只是安装GNU sed。

(是perl的标准,而不是sed。你应该使用\(相反,Mac OS X不使用GNU sed。

我认为加入-E将使它适用于两个。