Tous:
tr '[:lower:]' '[:upper:]'
(ne pas oublier les guillemets, sinon que ne fonctionnera pas s'il y a un fichier appelé :
, l
... ou r
dans le répertoire courant) ou:
awk '{print toupper($0)}'
ou:
dd conv=ucase
sont destinés à convertir les caractères en majuscules selon les règles définies dans les paramètres régionaux actuels. Cependant, même lorsque les paramètres régionaux utilisent UTF-8 comme jeu de caractères et définissent clairement la conversion de minuscules en majuscules, au moins GNU dd
, GNU tr
et mawk
(par défaut awk
sur Ubuntu par exemple) ne les suivent pas. En outre, il n'existe aucun moyen standard de spécifier des paramètres régionaux autres que C
ou POSIX
, donc si vous souhaitez convertir des fichiers UTF-8 en majuscules de manière portable indépendamment des paramètres régionaux actuels, vous n'avez pas de chance avec le toolchest standard.
Comme souvent, pour la portabilité, votre meilleur pari peut être perl:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
Maintenant, vous devez vous assurer que tout le monde n'est pas d'accord sur la version majuscule d'un caractère spécifique.
Par exemple, dans les locales turques, la majuscule i
n'est pas I
, mais İ
( <U0130>
). Ici avec l'héritage toolchest tr
au lieu de GNU tr:
$ echo ií | LC_ALL=C.UTF-8 tr '[:lower:]' '[:upper:]'
IÍ
$ echo ií | LC_ALL=tr_TR.UTF-8 tr '[:lower:]' '[:upper:]'
İÍ
Sur mon système, la perl
conversion vers le haut est définie dans /usr/share/perl/5.14/unicore/To/Upper.pl
, et je trouve qu'elle se comporte différemment sur quelques caractères de la libc GNU toupper()
dans les C.UTF8
paramètres régionaux par exemple, perl
étant plus précise. Par exemple, perl
convertit correctement ɀ en Ɀ , contrairement à la libc GNU (2.17).