Risposte:
Perché sed non è perl - le regex sed non hanno una \d
scorciatoia:
sed 's/[[:digit:]]\+\.//g'
sed documentazione di espressione regolare qui .
/[[:digit:]]*\. /
corrisponderà alla stringa foo.
perché consenti zero cifre. Se vuoi uno o più usi \+
come mostrato
Due problemi:
sed
non supporta \d
. Usa [0-9]
o [[:digit:]]
.
+
deve essere backslash per ottenere il significato speciale: \+
.
interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).
Purtroppo, questo non aiuta con il problema \ d ...
-E
non funziona con GNU sed, -r
invece lo usa .
sed
proprio che faccia schifo quando si tratta di portabilità ...
-E
su BSD sed e -r
su GNU sed), in BSD sed, +
né lo \+
stesso ( né lo stesso ?
) funzionerà affatto, mentre in GNU sed puoi farli lavorare con la barra rovesciata. Da qui la raccomandazione comune di usare regex esteso negli script
La pagina man di sed fa riferimento alla pagina man re_format. Fa 2 distinzioni: (1) obsolete rispetto alle espressioni regolari estese; (2) espressioni regolari non migliorate rispetto a quelle avanzate. Sono possibili tutte e 4 le combinazioni. C'è supporto in sed sia per obsoleti che estesi, ma in entrambi i casi solo per non potenziati. L'operatore \ d è una caratteristica delle espressioni regolari migliorate, quindi non supportato da sed.