Подтвердить что ты не робот

Работает ли grep по-разному на OSX

Я пытаюсь использовать 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.

4b9b3361

Ответ 2

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.

Ответ 3

Mac OS X основана на BSD и не использует инструменты GNU, к которым вы привыкли. Я прочитал POSIX grep, потому что без расширений GNU вы будете продолжать волноваться без причины. Все должно быть возможно, просто не так, как вы привыкли.