Почему ``\d` не работает в регулярных выражениях в sed?
Я пытаюсь использовать \d в regex в sed, но он не работает:
sed -re 's/\d+//g'
Но это работает:
sed -re 's/[0-9]+//g'
Ответ 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.