web-dev-qa-db-ja.com

grepはOSXで異なる動作をしますか

Linuxのように、すべてのすばらしい機能とRegExのすべての機能を備えたgrepを使用しようとしていますが、Mac OSXでは期待どおりに機能しません。

「-P」(Perl Regex)を使用すると、「usage」(-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マシンでは問題なく機能します。

17
func0der

ubuntu(まあ、私が横に座っている私の古代のubuntu 8ボックス…):

$ grep -V
GNU grep 2.5.3

OS X:

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

ええ;それらは異なるプログラムです。 OSXはLinuxではありません。それはBSDに基づいています。

GNUバージョンのgrepとそのさまざまな拡張機能が必要な場合は、 Homebrew を使用して簡単にインストールできます。

9
Rob Napier

OSXではデフォルトでFreeBSDgrepがあり、Linuxでは通常GNU grep

以下のリソースは、GNU grepがより良い(そしてより速い)ように見える理由を説明するかもしれません:

9
Johannes Weiss

Mac OS XはBSDに基づいており、使い慣れたGNUツールを使用しません。 POSIX grep を読んだのは、GNU拡張機能がないと、理由もなく動揺し続けるからです。あなたが慣れている正確な方法ではなく、すべてがまだ可能であるはずです。

4
rubenvb