Bytes und Zeichen sind nur im Standardgebiet C
("aka" POSIX
) identisch, in allen anderen Gebietsschemas sind sie jedoch unterschiedlich. Wenn Ihr System also standardmäßig ein UTF-8-Gebietsschema verwendet (z. B. en_US.UTF-8
), dann basieren die "Zeichenklassen" in gawk-Regex auf Zeichen und nicht auf einzelnen Bytes.
Beispielsweise /[eęė]/
entspricht dies der /[e\xC4\x99\xC4\x97]/
Annahme einer * .UTF-8-Ländereinstellung. wird es jedoch den Brief passen, ę
aber nicht č
, obwohl beide einen mit C4
Byte. (Aus irgendeinem Grund ist dies unterscheidet sich von einer Ebene /\xC4/
außerhalb einer Zeichenklasse, die tut die wörtliche Byte übereinstimmen C4
.)
Das Gleiche gilt für Bereiche innerhalb von Zeichenklassen. Da Byte FF
keine gültige UTF-8-Sequenz erstellt, kann die Regex-Bibliothek den gesamten Bereich für ungültig erklären.
gawk hat die -b
, --characters-as-bytes
Option diese zu deaktivieren.