Всі з:
tr '[:lower:]' '[:upper:]'
(Не забудьте лапки, в іншому випадку , що не працюватиме , якщо є файл з ім'ям :, l... або rв поточному каталозі) або:
awk '{print toupper($0)}'
або:
dd conv=ucase
призначені для перетворення символів у великі регістри відповідно до правил, визначених у поточному локалі. Однак навіть там, де локали використовують UTF-8 як набір символів і чітко визначають перетворення з малих літер у великі регістри, принаймні GNU dd, GNU trі mawk(наприклад, за замовчуванням awkдля Ubuntu) не слідкують за ними. Крім того, немає стандартного способу вказувати локалі, окрім Cабо POSIX, тому, якщо ви хочете перетворити файли UTF-8 у великі регістри портативно, незалежно від поточної мови, вам не пощастить зі стандартною панеллю інструментів.
Як часто для портативності найкраща ставка:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
Тепер вам слід остерігатися, що не всі згодні з тим, що являє собою велику версію конкретного символу.
Наприклад, у турецьких мовах великі літери iне I, але İ( <U0130>). Ось із інструментальним інструментом heirloom trзамість GNU tr:
$ echo ií | LC_ALL=C.UTF-8 tr '[:lower:]' '[:upper:]'
IÍ
$ echo ií | LC_ALL=tr_TR.UTF-8 tr '[:lower:]' '[:upper:]'
İÍ
На моїй системі, perlперетворення до верхнього визначаються /usr/share/perl/5.14/unicore/To/Upper.pl, і я вважаю , що він веде себе по- різному на кілька персонажів з LIBC GNU toupper()в C.UTF8локалі, наприклад, perlбути більш точними. Наприклад, perlправильно перетворює ɀ в Ɀ , GNU libc (2.17) не робить.