Perché sed non utilizza la modalità regex estesa per impostazione predefinita?


10

Sto usando sed. Stavo usando una regex che era corretta per quanto potevo vedere, ma sed non ha fatto nulla. Si scopre che stavo usando \s+sed che non riesco a capire e quando sono passato a [ ]+ha funzionato.

Quindi per riassumere, ho creato una regex che per funzionare ha dovuto sfuggire a quasi tutto e rimuovere lo \sspazio bianco. Sembra che ci sia una modalità per evitare tutto ciò che è -rquindi volevo chiedere:

  1. Perché non è -rla modalità predefinita per sed? Perché ho dovuto fare così tanti problemi per sfuggire a tutto?
  2. mandice che esiste l'opzione --posixe che "POSIX.2 BREs dovrebbe essere supportato" A cosa si riferisce questo? Modalità NFA / DFA?

Per inciso, per abbinare spazi bianchi come l' \s+uso di perl [[:space:]][:space:]]*in BRE e lo stesso o [[:space:]]+in ERE.
jrm

Risposte:


10

Ri 1) La risposta è la stessa di qualsiasi altro strumento che è stato migliorato nel corso di decenni. :)

Non si desidera interrompere gli script esistenti modificando il comportamento predefinito.

Ri 2) Non ha nulla a che fare con il motore di abbinamento; è solo una questione di quale serie di espressioni regolari è supportata. POSIX BRE significa "espressione regolare di base".


Che dire del punto (2)?
Jim,

La modifica aiuta?
tink

1

Per quanto riguarda il punto 2: gnu sedutilizza GNU BREper impostazione predefinita. Per utilizzare POSIX BREè necessario specificare--posix

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.