Warum wird sed nicht standardmäßig im erweiterten Regex-Modus verwendet?

10

Ich benutze sed. Ich habe einen regulären Ausdruck verwendet, der, soweit ich sehen konnte, korrekt war, aber sed hat nichts getan. Es stellt sich heraus, dass ich verwendet habe, \s+was sed nicht verstehen kann, und als ich darauf umstieg, hat [ ]+es funktioniert.

Zusammenfassend habe ich einen regulären Ausdruck erstellt, der, damit er funktioniert, fast allem entkommen und das \sLeerzeichen entfernen musste . Es scheint, dass es einen Modus gibt, um all dies zu vermeiden. -rAlso wollte ich fragen:

  1. Warum ist -rder Standardmodus für sed nicht? Warum musste ich mir so viel Mühe geben, um allem zu entkommen?
  2. mansagt, dass es die Option gibt --posixund dass "POSIX.2 BREs unterstützt werden sollten" Worauf bezieht sich das? NFA / DFA-Modus?
Jim
quelle
Nebenbei bemerkt, um Leerzeichen wie die \s+Verwendung von Perl [[:space:]][:space:]]*in BRE und demselben oder [[:space:]]+in ERE abzugleichen.
jrm

Antworten:

10

Zu 1) Die Antwort ist dieselbe wie für jedes andere Tool, das über Jahrzehnte verbessert wurde. :) :)

Sie möchten vorhandene Skripte nicht durch Ändern des Standardverhaltens beschädigen.

Zu 2) Das hat nichts mit der passenden Engine zu tun; Es ist nur eine Frage, welche regulären Ausdrücke unterstützt werden. POSIX BRE bedeutet "grundlegender regulärer Ausdruck".

basteln
quelle
Was ist mit Punkt (2)?
Jim
Hilft die Bearbeitung?
Tink
1

Zu Punkt 2: gnu sedVerwendet BREstandardmäßig GNU . Um POSIX zu verwenden BRE, sollten Sie angeben--posix

user2351281
quelle