У меня есть два сценария, которые я хотел бы запустить как на компьютере с Linux, так и на компьютере MacOS. Но другое поведение команды egrep
заставляет эти сценарии генерировать разные выходные данные.
В частности, это то, что происходит, когда я использую egrep
в Linux (Ubuntu):
$ echo ".test" | egrep "[a-zA-Z0-9]*"
.test
$ echo ".test" | egrep -o "[a-zA-Z0-9]*"
test
$
и вот что происходит, когда я использую egrep
на MacOS
$ echo ".test" | egrep "[a-zA-Z0-9]*"
.test
$ echo ".test" | egrep -o "[a-zA-Z0-9]*"
$
Первое поведение - это то, что я ожидал, второе (пустой вывод) неожиданно. Возможно, это ошибка в реализации egrep
с опцией -o
под MacOS?
Или, если второе поведение также верно, знаете ли вы способ получить то же поведение для второго случая?
Я попытался просмотреть соответствующие man
страницы для двух команд, это извлечено из справочной страницы Linux:
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each
such part on a separate output line.
и это извлечено из справочной страницы для MacOS:
-o, --only-matching
Prints only the matching part of the lines.
Хотя описания выглядят немного по-разному, значение этих двух параметров, кажется, одинаково, так почему же egrep -o
ведет себя по-разному в MacOS? Разве я не рассматриваю какой-либо тонкий аспект этой команды?