Ответ 1
В OS X у вас есть FreeBSD grep
по умолчанию, в Linux обычно GNU grep
.
Следующие ресурсы могут объяснить, почему GNU grep выглядит лучше (и быстрее):
Я пытаюсь использовать grep, как я привык к Linux, со всеми его замечательными функциями и всеми возможностями RegEx, но в Mac OS X он не работает, как я ожидаю.
Если я использую "-P" (Perl Regex), он дает мне "использование" (--help). Там мы находим параметр "-P" в списке параметров "-abcDEFGHhIiJLmnmnOoPqRSsUVvwxZ"... Все еще не работает.
Другим примером является знак звездочки или знак плюса. Я пытаюсь сделать это 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.
В OS X у вас есть FreeBSD grep
по умолчанию, в Linux обычно GNU grep
.
Следующие ресурсы могут объяснить, почему GNU grep выглядит лучше (и быстрее):
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.
Если вам нужна версия grep GNU с различными расширениями, вы можете легко установить ее с помощью Homebrew.
Mac OS X основана на BSD и не использует инструменты GNU, к которым вы привыкли. Я прочитал POSIX grep, потому что без расширений GNU вы будете продолжать волноваться без причины. Все должно быть возможно, просто не так, как вы привыкли.