Рассмотрим следующую замену sed regex:
$ echo 'oóO' | sed -e 's/[^a-z]/./g'
oó.
Для меня это говорит: "замените все символы, не находящиеся в диапазоне от a
до z
, на .
, поэтому я ожидаю вывод o..
, поскольку ни neither, ни O не находятся в диапазоне a-z
в смысле «кодовой точки» в любой кодировке (FWIW, я использую UTF-8).
Что с этим?
Как я могу сделать диапазон, который точно соответствует только [abcdefhijklmnopqrstuvwxyz]
, не выписывая все это?
Вот вывод locale
в моей системе:
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=