Как преобразовать текстовый файл в нижний регистр в UNIX (но в UTF-8) - PullRequest
7 голосов
/ 24 сентября 2010

Мне нужно преобразовать весь текст в нижний регистр, но без использования традиционной команды "tr", потому что она не обрабатывает языки UTF-8 должным образом.

Есть хороший способ сделать это? Мне нужен фильтр UNIX, чтобы я мог обработать его в конвейере.

Ответы [ 2 ]

13 голосов
/ 24 сентября 2010

Gnu sed должен уметь обрабатывать юникод. Попробуйте

$ echo 'Some StrAngÉ LeTTeRs 123' | sed -e 's/./\L\0/g'
some strangé letters 123
3 голосов
/ 24 сентября 2010

Если вы можете использовать Python, вам может помочь такой код:

import sys
import codecs

utf8input = codecs.getreader("utf-8")(sys.stdin)
utf8output = codecs.getwriter("utf-8")(sys.stdout)

utf8output.write(utf8input.read().lower())

На моем компьютере с Windows (извините :) Я могу использовать его как фильтр:

cat big.txt | python tolowerutf8.py > lower.txt3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...