Ответы:
Поскольку sed не является perl-regexed, у него нет \d
сокращения:
sed 's/[[:digit:]]\+\.//g'
Документация по регулярным выражениям здесь .
/[[:digit:]]*\. /
будет соответствовать строке, foo.
потому что вы допускаете ноль цифр. Если вы хотите использовать один или несколько, \+
как показано на рисунке
Две проблемы:
sed
не поддерживает \d
. Используйте [0-9]
или [[:digit:]]
.
+
должно получить управляющие последовательностями особого значения: \+
.
interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).
сожалению, это не поможет с проблемой \ d ...
-E
не работает для GNU sed, -r
вместо этого он использует .
sed
просто отстойно, когда дело доходит до переносимости ...
-E
в sed BSD и -r
в GNU sed), то в BSD sed ни то, +
ни другое \+
(то же самое с ?
) не будет работать вообще, тогда как в GNU sed вы можете это сделать. заставить их работать с обратной косой чертой. Отсюда общая рекомендация использовать расширенное регулярное выражение в сценариях
Справочная страница sed ссылается на справочную страницу re_format. Это делает 2 различия: (1) устаревшие и расширенные регулярные выражения; (2) регулярные выражения без улучшений по сравнению с расширенными. Все 4 комбинации возможны. В sed есть поддержка как устаревшего, так и расширенного, но в любом случае только для не улучшенного. Оператор \ d является функцией расширенных регулярных выражений, поэтому не поддерживается sed.