Auf BSD sed -E
ist das Flag "Extended Regex". Auf GNU sed heißt es in der Dokumentation, dass -r
es sich um das erweiterte Regex-Flag handelt, aber der -E
Switch funktioniert auch (obwohl in meiner Forschung nicht dokumentiert).
Ich erinnere mich, dass ich irgendwo gelesen habe, -E
was in der nächsten Ausgabe der POSIX-Spezifikationen angegeben wird, aber ich kann nicht finden, wo ich das gelesen habe.
(Ist das wahr? Gibt es eine maßgebende Referenz für das, oder ein Benutzer hier die ist eine Autorität?)
Wie tragbar ist der -E
Switch sed
?
Gibt es Standardversionen (dh POSIX-kompatible Versionen), sed
die -E
nicht unterstützt werden? (Welche?)
Warum ist die -E
Flagge für GNU sed nicht dokumentiert?
-E
:/* Undocumented, for compatibility with BSD sed. */
und behandelt es genauso wie-r
Antworten:
GNU fügte zunächst undokumentierte Unterstützung hinzu, um
-E
nur mit der BSD-Syntax kompatibel zu sein, und die Quelle enthielt den KommentarAber im Jahr 2013 wurde das in diesem Commit mit der Protokollmeldung entfernt
und das Commit verweist auf einen Fehler-Tracker für POSIX auf dieser Seite , der als akzeptiert markiert, indem das
-E
Flag zu densed
Argumenten hinzugefügt wirdEs scheint es nicht in die neueste POSIX-Spezifikation ( sed spezifischer Teil ) geschafft zu haben, aber ich denke, es kommt.
quelle
-E
, obwohl es tut Unterstützung-r
. (Dies mag für Umgebungen mit alten Systemen offensichtlich erscheinen, aber ich hatte vergessen, dies zu überprüfen.)-E
, um mit anderen Flags kompatibel zu sein, musste es eine Zeit geben, die vor dieser Hinzufügung lagDer Ort, an dem Sie nachsehen müssen, sind Systeme, die zertifiziert sind:
OSX hat es, aber ob es BSD- oder GNU-first ist, war nicht Teil der Frage.
quelle