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?

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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.