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

Почему ``\d` не работает в регулярных выражениях в sed?

Я пытаюсь использовать \d в regex в sed, но он не работает:

sed -re 's/\d+//g'

Но это работает:

sed -re 's/[0-9]+//g'
4b9b3361

Ответ 1

\d - это переключатель, а не макрос регулярного выражения. Если вы хотите использовать некоторую предопределенную "константу" вместо выражения [0-9], просто попробуйте запустить этот код:

s/[[:digit:]]+//g

Ответ 2

В sed нет такой специальной группы символов. Вам нужно будет использовать [0-9].

В GNU sed \d вводится десятичный код символа от одной до трех цифр в диапазоне 0-255. Как указано в этом комментарии.

Ответ 3

Лучше использовать расширенный шаблон в sed, добавив -E. В базовом RegExp\d и некоторые другие не будут обнаружены -E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.