Я пытаюсь использовать 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.