Разница между [0-9] * и [0-9] + в седе - PullRequest
1 голос
/ 21 сентября 2019

Насколько я понимаю, * соответствует нулю или более и + соответствует одному или нескольким.Поэтому, когда я сделал это на macOS:

echo "1" |  sed 's/[0-9]*//g'

Номер был удален.

Но если я сделаю это:

echo "1" |  sed 's/[0-9]+//g'

Номер все еще будет там.

Но разве [0-9] + также не должно совпадать с "1"?

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Речь идет (вероятно) о том, выполняется ли команда sed в режиме POSIX (строгий) или включены ли расширения GNU.

В режиме POSIX + в регулярном выражении sedне является метасимволом.

В режиме расширения GNU + означает «одно или несколько повторений».Расширения GNU включаются с помощью опции -E.

Для получения дополнительной информации о регулярных выражениях sed:

1 голос
/ 21 сентября 2019

+ в sed считается частью расширенных регулярных выражений, поэтому по умолчанию + не распознается как специальный символ.Используйте флаг -E, чтобы включить расширенные регулярные выражения, например:

echo "1" |  sed -E 's/[0-9]+//g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...