Alle:
tr '[:lower:]' '[:upper:]'
(vergessen Sie nicht die Anführungszeichen, sonst das wird nicht funktionieren , wenn es eine Datei mit dem Namen :
, l
... oder r
im aktuellen Verzeichnis) oder:
awk '{print toupper($0)}'
oder:
dd conv=ucase
sollen Zeichen gemäß den im aktuellen Gebietsschema definierten Regeln in Großbuchstaben umwandeln. Selbst wenn Gebietsschemas UTF-8 als Zeichensatz verwenden und die Konvertierung von Klein- in Großbuchstaben klar definieren, folgen ihnen zumindest GNU dd
, GNU tr
und mawk
( awk
zum Beispiel die Standardeinstellung unter Ubuntu) nicht. Es gibt auch keine Standardmethode zum Festlegen anderer Gebietsschemas als C
oder POSIX
. Wenn Sie also UTF-8-Dateien unabhängig vom aktuellen Gebietsschema portabel in Großbuchstaben konvertieren möchten, haben Sie mit der Standard-Toolchest kein Glück.
Aus Gründen der Portabilität ist Perl die beste Wahl:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
Nun müssen Sie aufpassen, dass sich nicht alle darüber einig sind, wie die Großbuchstabenversion eines bestimmten Charakters lautet.
In türkischen Gebietsschemas ist der Großbuchstabe i
beispielsweise nicht I
, sondern İ
( <U0130>
). Hier mit der Erbstück-Werkzeugkiste tr
anstelle von GNU tr:
$ echo ií | LC_ALL=C.UTF-8 tr '[:lower:]' '[:upper:]'
IÍ
$ echo ií | LC_ALL=tr_TR.UTF-8 tr '[:lower:]' '[:upper:]'
İÍ
Auf meinem System ist die perl
Konvertierung nach oben in definiert /usr/share/perl/5.14/unicore/To/Upper.pl
, und ich stelle fest, dass sie sich beispielsweise bei einigen Zeichen aus der GNU-Bibliothek toupper()
im C.UTF8
Gebietsschema anders verhält und perl
genauer ist. Zum Beispiel perl
konvertiert ɀ korrekt in Ɀ , die GNU libc (2.17) nicht.