Відповіді:
Оскільки sed не є perl - sed-регулярні вирази не мають \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
на BSD sed і -r
на GNU sed), в BSD sed ні, +
ні \+
(те саме ?
) не працюватимуть взагалі, тоді як у GNU sed ви можете змусити їх працювати з косою рисою. Звідси загальна рекомендація використовувати розширений регулярний вираз у сценаріях
Сторінка sed man посилається на man-сторінку re_format. Він робить 2 розрізнення: (1) застарілий порівняно з розширеними регулярними виразами; (2) некращені проти покращені регулярні вирази. Можливі всі 4 комбінації. Існує підтримка в sed і для застарілих, і для розширених, але в будь-якому випадку лише для непідсилених. Оператор \ d є функцією розширених регулярних виразів, тому не підтримується sed.