Estoy usando sed. Estaba usando una expresión regular que era correcta hasta donde podía ver, pero sed no hizo nada. Resulta que estaba usando lo \s+
que sed no puede entender, y cuando cambié a [ ]+
él funcionó.
Para resumir, hice una expresión regular que para que funcione tuve que escapar de casi todo y eliminar el \s
espacio en blanco. Parece que hay un modo para evitar todo esto, -r
así que quería preguntar:
- ¿Por qué no es
-r
el modo predeterminado para sed? ¿Por qué tuve que tomar tantas molestias para escapar de todo? man
dice que existe la opción--posix
y que "los BRE POSIX.2 deberían ser compatibles" ¿A qué se refiere esto? Modo NFA / DFA?
\s+
uso de Perl[[:space:]][:space:]]*
en BRE y el mismo o[[:space:]]+
en ERE.Respuestas:
Re 1) La respuesta es la misma que para cualquier otra herramienta que se haya mejorado durante décadas. :)
No desea romper los scripts existentes cambiando el comportamiento predeterminado.
Re 2) Eso no tiene nada que ver con el motor correspondiente; es solo una cuestión de qué conjunto de expresiones regulares es compatible. POSIX BRE significa "expresión regular básica".
fuente
En cuanto al punto 2:
gnu sed
utiliza GNUBRE
por defecto. Para usar POSIXBRE
, debe especificar--posix
fuente