Wszystkie z:
tr '[:lower:]' '[:upper:]'
(nie zapomnij cytaty, które w przeciwnym razie nie będzie działać, jeśli istnieje plik o nazwie :, l... lub rw bieżącym katalogu) lub:
awk '{print toupper($0)}'
lub:
dd conv=ucase
mają na celu konwersję znaków na wielkie litery zgodnie z regułami określonymi w bieżących ustawieniach regionalnych. Jednak nawet tam, gdzie ustawienia narodowe używają UTF-8 jako zestawu znaków i wyraźnie definiują konwersję małych liter na wielkie, przynajmniej GNU dd, GNU tri mawk(na przykład domyślny awkw Ubuntu) ich nie przestrzegają. Ponadto nie ma standardowego sposobu określania ustawień narodowych innych niż Club POSIX, więc jeśli chcesz konwertować pliki UTF-8 na przenośne wielkie litery niezależnie od bieżących ustawień narodowych, nie masz szczęścia ze standardową skrzynką narzędzi.
Jak często, dla przenośności, najlepszym rozwiązaniem może być Perl:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
Teraz musisz uważać, aby nie wszyscy zgadzali się co do wielkiej wersji określonej postaci.
Na przykład w ustawieniach tureckich wielką literą inie jest I, ale İ( <U0130>). Tutaj z zestawem narzędzi rodowych trzamiast GNU tr:
$ echo ií | LC_ALL=C.UTF-8 tr '[:lower:]' '[:upper:]'
IÍ
$ echo ií | LC_ALL=tr_TR.UTF-8 tr '[:lower:]' '[:upper:]'
İÍ
W moim systemie perlkonwersja na górną jest zdefiniowana w /usr/share/perl/5.14/unicore/To/Upper.pl, i okazuje się, że zachowuje się inaczej na kilku znakach z GNU libc toupper()w C.UTF8lokalizacji, na przykład, perljest bardziej dokładna. Na przykład perlpoprawnie konwertuje ɀ na Ɀ , GNU libc (2.17) tego nie robi.