Todo:
tr '[:lower:]' '[:upper:]'
(no se olvide de las comillas, de otro modo que no va a funcionar si hay un archivo llamado :
, l
... o r
en el directorio actual) o:
awk '{print toupper($0)}'
o:
dd conv=ucase
están destinados a convertir caracteres a mayúsculas de acuerdo con las reglas definidas en la configuración regional actual. Sin embargo, incluso cuando las configuraciones regionales usan UTF-8 como el conjunto de caracteres y definen claramente la conversión de minúsculas a mayúsculas, al menos GNU dd
, GNU tr
y mawk
(el valor predeterminado awk
en Ubuntu, por ejemplo) no las siguen. Además, no hay una forma estándar de especificar configuraciones regionales que no sean C
o POSIX
, por lo que si desea convertir los archivos UTF-8 a mayúsculas de manera portátil, independientemente de la configuración regional actual, no tiene suerte con el cofre de herramientas estándar.
Como a menudo, para la portabilidad, su mejor apuesta puede ser perl:
$ echo lľsšcčtťzž | PERLIO=:utf8 perl -pe '$_=uc'
LĽSŠCČTŤZŽ
Ahora, debes tener en cuenta que no todos están de acuerdo sobre cuál es la versión en mayúsculas de un personaje específico.
Por ejemplo, en locales turcos, las mayúsculas i
no son I
, sino İ
( <U0130>
). Aquí con la herramienta tr
de comprobación de herencia en lugar 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:]'
İÍ
En mi sistema, la perl
conversión a superior se define en /usr/share/perl/5.14/unicore/To/Upper.pl
, y encuentro que se comporta de manera diferente en algunos caracteres de la libc de GNU toupper()
en la C.UTF8
configuración regional, por ejemplo, perl
siendo más precisa. Por ejemplo perl
, convierte correctamente ɀ a Ɀ , la libc de GNU (2.17) no.
Creo que puedes hacer esto
awk
y sutoupper
función.Por ejemplo
No funciona con GNU
tr
:Funciona con GNU
awk
:fuente
tr
oawk
aplicación. Por ejemplo, la mayoríatr
convertirá correctamente los caracteres cuando se encuentre en un entorno local UTF8, de acuerdo con el entorno local actual, GNUtr
no.mawk
no lo hacetr
, pero no conawk
Esto funciona con OS X
tr
pero no con GNUtr
:Esto funciona con
gawk
pero no conmawk
onawk
(que está/usr/bin/awk
en OS X):Otra opción es usar GNU
sed
:En Bash 4.0 y versiones posteriores también puede usar la
^^
expansión de parámetros:fuente