我在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
将使它适用于两个。