grep在OSX上的工作方式不同吗?

时间:2013-10-16 20:44:01

标签: regex macos bash grep

我正在尝试使用grep,就像我习惯使用Linux一样,具有所有令人惊叹的功能以及RegEx的所有功能......但是在Mac OS X上它并没有像我期望的那样工作。

如果我使用“-P”(Perl Regex),它会给我“使用”( - help)输出。 在那里我们在参数列表“-abcDEFGHhIiJLlmnOoPqRSsUVvwxZ”中找到“-P”参数...... 仍然没有工作。

另一个例子是星号或加号。 我正在尝试这个http://wiki.bash-hackers.org/howto/conffile

检查配置文件中是否有指令使用的不当内容:

if egrep -q -v '^#|^[^ ]*=[^;]*' "$configfile"; then
  echo "Config file is unclean, cleaning it..." >&2
  # filter the original to a new file
  egrep '^#|^[^ ]*=[^;&]*'  "$configfile" > "$configfile_secured"
  configfile="$configfile_secured"
fi

它不适用于这样的行:

DATABASE=some_database; ls -la

我做错了什么? 因为所有这些在Linux机器上都能正常工作。

3 个答案:

答案 0 :(得分:9)

ubuntu(嗯,我坐在旁边的古老的ubuntu 8盒子......):

$ grep -V
GNU grep 2.5.3

OS X:

$ grep -V
grep (BSD grep) 2.5.1-FreeBSD

呀;他们是不同的节目。 OS X不是Linux。它基于BSD。

如果你想要GNU版本的grep及其各种扩展,你可以使用Homebrew轻松安装它。

答案 1 :(得分:9)

在OS X上,默认情况下你有FreeBSD grep,在Linux上通常是GNU grep

以下资源可以解释为什么GNU grep似乎更好(更快):

答案 2 :(得分:4)

Mac OS X基于BSD,不使用您习惯使用的GNU工具。我读了POSIX grep,因为如果没有GNU扩展,你会无缘无故地激动。一切都应该是可能的,而不是你习惯的确切方式。