Я пытаюсь использовать sed
чтобы заменить все шаблоны цифрами, за которыми сразу следует точка (например, 3.
, 355.
) пустой строкой. Итак, я стараюсь:
sed 's/\d+\.//g' file.txt
Но это не работает. Это почему?
Поскольку sed не является perl - регулярными выражениями sed, у них нет сокращения \d
:
sed 's/[[:digit:]]\+\.//g'
Документация по регулярным выражениям здесь.
Две проблемы:
sed
не поддерживает \d
. Используйте [0-9]
или [[:digit:]]
.
+
должен иметь обратную косую черту, чтобы получить особое значение: \+
.
Справочная страница sed ссылается на справочную страницу re_format. Это делает 2 различия: (1) устаревшие и расширенные регулярные выражения; (2) неосуществленные и расширенные регулярные выражения. Все 4 комбинации возможны. В sed есть поддержка как устаревшего, так и расширенного, но в любом случае только для не улучшенного. Оператор \d является функцией расширенных регулярных выражений, поэтому не поддерживается sed.