¿Por qué no está sed usando el modo regex extendido por defecto?

10

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 \sespacio en blanco. Parece que hay un modo para evitar todo esto, -rasí que quería preguntar:

  1. ¿Por qué no es -rel modo predeterminado para sed? ¿Por qué tuve que tomar tantas molestias para escapar de todo?
  2. mandice que existe la opción --posixy que "los BRE POSIX.2 deberían ser compatibles" ¿A qué se refiere esto? Modo NFA / DFA?
Jim
fuente
Como un aparte, para combinar espacios en blanco como el \s+uso de Perl [[:space:]][:space:]]*en BRE y el mismo o [[:space:]]+en ERE.
jrm

Respuestas:

10

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".

tink
fuente
¿Qué pasa con el punto (2)?
Jim
¿Ayuda la edición?
tink
1

En cuanto al punto 2: gnu sedutiliza GNU BREpor defecto. Para usar POSIX BRE, debe especificar--posix

usuario2351281
fuente