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

时间:2011-10-27 09:04:17

标签: linux macos sed

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

3 个答案:

答案 0 :(得分:28)

对于Mac OS X sed,请使用-E代替-r来获取ERE。此外,GNU扩展不存在,因此您需要文字字符而不是\t\n元字符。

或者只是安装GNU sed。

答案 1 :(得分:1)

(是perl的标准,而不是sed。您应该使用\(代替。 Mac OS X不使用GNU sed。

答案 2 :(得分:0)

我认为添加-E会使它适用于两者。