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 \s
Leerzeichen entfernen musste . Es scheint, dass es einen Modus gibt, um all dies zu vermeiden. -r
Also wollte ich fragen:
- Warum ist
-r
der Standardmodus für sed nicht? Warum musste ich mir so viel Mühe geben, um allem zu entkommen? man
sagt, dass es die Option gibt--posix
und dass "POSIX.2 BREs unterstützt werden sollten" Worauf bezieht sich das? NFA / DFA-Modus?
\s+
Verwendung von Perl[[:space:]][:space:]]*
in BRE und demselben oder[[:space:]]+
in ERE abzugleichen.Antworten:
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".
quelle
Zu Punkt 2:
gnu sed
VerwendetBRE
standardmäßig GNU . Um POSIX zu verwendenBRE
, sollten Sie angeben--posix
quelle