Как изменить регистр файла UTF - PullRequest
1 голос
/ 16 июля 2010

У меня UTF-файл в верхнем регистре, и я хочу перевести все слова в нижний регистр.

Я пробовал:

`$ tr '[:upper:]' '[:lower:]' < input.txt > output.txt`

, но это меняет только черт без знака

Спасибо

Ответы [ 3 ]

3 голосов
/ 17 июля 2010

Наконец самый простой способ, который я нашел, это использовать awk:

awk '{print tolower($0)}' < input.txt > output.txt
1 голос
/ 16 июля 2010

Это потому, что классы символов по умолчанию работают только в стандартном ASCII, который не включает большинство символов с международным акцентом Если у вас есть определенный набор этих символов, проще всего было бы просто добавить сопоставление из специального заглавного символа в специальный строчный символ вручную:

tr 'ÄÖU [: upper:]' 'äöü [: lower:]'

Если у вас есть только несколько акцентированных символов, это выполнимо.

0 голосов
/ 17 июля 2010

Нет, проблема в том, что tr не поддерживает Unicode.

$ grep -o '[[:upper:]]' <<< JalapeÑo
J
Ñ
$ tr '[:upper:]' '[:lower:]' <<< JalapeÑo
jalapeÑo

Причина в использовании [:upper:] и т. Д. Для обработки символов внеASCII.В противном случае вы можете просто использовать [A-Z] и [a-z].Вот почему у PCRE есть класс символов [:ascii:]]:

$ perl -pe 's/[[:ascii:]]//g' <<< jalapeño
ñ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...