Respuestas:
Debido a que sed no es perl, las expresiones regulares sed no tienen una \d
abreviatura:
sed 's/[[:digit:]]\+\.//g'
sed documentación de expresión regular aquí .
/[[:digit:]]*\. /
coincidirá con la cadena foo.
porque permite cero dígitos. Si quieres usar uno o más \+
como se muestra
Dos problemas:
sed
no soporta \d
. Use [0-9]
o [[:digit:]]
.
+
deben ser barras invertidas para obtener el significado especial: \+
.
interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).
Tristemente, esto no ayuda con el problema \ d ...
-E
no funciona para GNU sed, en su -r
lugar usa .
sed
una mierda cuando se trata de portabilidad ...
-E
en BSD sed y -r
en GNU sed), en BSD sed, ni +
ni \+
(lo mismo con ?
) funcionará, mientras que en GNU sed puede hacer que trabajen con la barra invertida. De ahí la recomendación común de utilizar expresiones regulares extendidas en las secuencias de comandos
La página de manual de sed hace referencia a la página de manual de re_format. Hace 2 distinciones: (1) expresiones regulares obsoletas versus extendidas; (2) expresiones regulares no mejoradas versus mejoradas. Las 4 combinaciones son posibles. Hay soporte en sed para obsoletos y extendidos, pero en cualquier caso solo para no mejorados. El operador \ d es una característica de las expresiones regulares mejoradas, por lo tanto, no es compatible con sed.