我正在尝试使用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机器上都能正常工作。
答案 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扩展,你会无缘无故地激动。一切都应该是可能的,而不是你习惯的确切方式。