Всі з:
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) не робить.