Байты и символы идентичны только в локали по умолчанию C
(иначе POSIX
), но во всех других локалях они отличаются. Таким образом, если ваша система использует локаль UTF-8 (например en_US.UTF-8
) по умолчанию, тогда «классы символов» в скобках в регулярных выражениях gawk основаны на символах, а не на отдельных байтах.
Например, /[eęė]/
эквивалентно /[e\xC4\x99\xC4\x97]/
предположению, что локаль * .UTF-8; однако, оно будет соответствовать букве, ę
но не будет č
, несмотря на то, что оба имеют C4
байт. (По некоторым причинам, это отличается от равнинного /\xC4/
вне символьного класса, который делает соответствовать буквальным байтам C4
.)
В любом случае, то же самое относится к диапазонам внутри символьных классов, и поскольку байт FF
не создает допустимую последовательность UTF-8, библиотека регулярных выражений может просто объявить весь диапазон недействительным или что-то в этом роде.
простак имеет -b
, --characters-as-bytes
возможность отключить это.