Tutto di:
tr '[:lower:]' '[:upper:]'
(non dimenticare le virgolette, altrimenti che non funziona se c'è un file chiamato :, l, ... o rnella directory corrente) oppure:
awk '{print toupper($0)}'
o:
dd conv=ucase
hanno lo scopo di convertire i caratteri in maiuscolo in base alle regole definite nella locale corrente. Tuttavia, anche laddove le versioni locali utilizzano UTF-8 come set di caratteri e definiscono chiaramente la conversione da lettere minuscole a maiuscole, almeno GNU dd, GNU tre mawk(l'impostazione predefinita awksu Ubuntu per esempio) non li seguono. Inoltre, non esiste un modo standard per specificare locali diversi da Co POSIX, quindi se si desidera convertire i file UTF-8 in maiuscolo in modo portabile indipendentemente dalle impostazioni internazionali correnti, si è sfortunati con il toolchest standard.
Come spesso, per portabilità, la tua scommessa migliore potrebbe essere perl:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
Ora, devi stare attento che non tutti sono d'accordo su quale sia la versione maiuscola di un personaggio specifico.
Ad esempio, nelle versioni locali turche, inon è maiuscolo I, ma İ( <U0130>). Qui con il toolchest cimelio trinvece di GNU tr:
$ echo ií | LC_ALL=C.UTF-8 tr '[:lower:]' '[:upper:]'
IÍ
$ echo ií | LC_ALL=tr_TR.UTF-8 tr '[:lower:]' '[:upper:]'
İÍ
Sul mio sistema, la perlconversione in alto è definita in /usr/share/perl/5.14/unicore/To/Upper.pl, e trovo che si comporti in modo diverso su alcuni caratteri della libc GNU toupper()nelle impostazioni C.UTF8locali per esempio, perlessendo più accurato. Ad esempio, perlconverte correttamente ɀ in Ɀ , la GNU libc (2.17) no.