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).
Je pense que vous pouvez le faire avec
awk
et satoupper
fonction.Par exemple
Ne fonctionne pas avec GNU
tr
:Fonctionne avec GNU
awk
:la source
tr
ou laawk
mise en œuvre. Par exemple, la pluparttr
convertiront correctement les caractères dans un environnement local UTF8, selon l'environnement local actuel, GNUtr
ne le fait pas.mawk
non.tr
, mais pas avecawk
Cela fonctionne avec OS X
tr
mais pas avec GNUtr
:Cela fonctionne avec
gawk
mais pas avecmawk
ounawk
(qui est/usr/bin/awk
sous OS X):Une autre option consiste à utiliser GNU
sed
:Dans Bash 4.0 et versions ultérieures, vous pouvez également utiliser l'
^^
extension des paramètres:la source