Un truco rápido con el comando Unix tr, vamos a convertir las letras mayúsculas a minúsculas de un fichero.
Fichero test.txt:
$ cat test.txt minusculas MAYUSCULAS
Convertir mayúsculas en minúsculas del fichero test.txt:
$ cat test.txt | tr [:upper:] [:lower:] minusculas mayusculas
Convertir minúsculas en mayúsculas del fichero test.txt:
$ cat test.txt | tr [:lower:] [:upper:] MINUSCULAS MAYUSCULAS
Por supuesto, el comando tr nos ofrece muchas más opciones para transformación de carácteres, os dejo la ayuda del comando, recordad que en las páginas man hay mucha más información.
$ tr --help
Modo de empleo: tr [OPCIÓN]... CONJUNTO1 [CONJUNTO2]
Traducir, comprimir, y/o borrar caracteres de la entrada estándar,
escribiendo a la entrada estándar.
-c, -C, --complement primer compliment SET1
-d, --delete borrar caracteres en SET1, no traducir
-s, --squeeze-repeats reemplazar cada secuencia de entradas de un caracter repetido
esta es una lista de SET1 con una sóla coincidencia
de ese caracter
-t, --truncate-set1 primero truncar SET1 a la longitud de SET2
--help muestra esta ayuda y finaliza
--version informa de la versión y finaliza
Los CONJUNTOs se especifican como cadenas de caracteres. La mayoría se
representan a sí mismos.
Las secuencias válidas son las siguientes:
\NNN carácter con valor octal NNN (de uno a tres dígitos)
\\ barra invertida
\a pitido audible (BEL)
\b espacio hacia atrás
\f salto de página
\n salto de línea
\r retorno de carro
\t tabulación horizontal
\v tabulación vertical
CAR1-CAR2 todos los caracteres comprendidos entre CAR1 y CAR2 contados
en orden ascendente
[CAR*] en CONJUNTO2, copias de CAR hasta que se alcance la longitud
de CONJUNTO1
[CAR*REPITE] copia REPITE veces CAR; REPITE es octal si comienza con 0
[:alnum:] todas las letras y dígitos
[:alpha:] todas las letras
[:blank:] todos los espacios en blanco horizontales
[:cntrl:] todos los caracteres de control
[:digit:] todos los dígitos
[:graph:] todos los caracteres imprimibles, sin incluir el espacio
[:lower:] todas las letras minúsculas
[:print:] todos los caracteres imprimibles, incluyendo el espacio
[:punct:] todos los caracteres de puntuación
[:space:] todos los espacios en blanco horizontales y verticales
[:upper:] todas las letras mayúsculas
[:xdigit:] todos los números hexadecimales
[=CAR=] todos los caracteres que son igual que CAR
Se produce la traducción si no se especifican CONJUNTO1 y CONJUNTO2, siempre
y cuando no aparezca la opción -d. -t se puede usar sólo al traducir.
CONJUNTO2 se expande a la longitud de CONJUNTO1, repitiendo su último
carácter tantas veces como sea necesario. Los caracteres que sobran en
CONJUNTO2 no se tienen en cuenta. Solamente se garantiza que [:lower:]
y [:upper:] sean expandidos en orden ascendente; si se usa en
CONJUNTO2 al traducir, sólo se pueden usar en parejas, para
especificar conversión a mayúsculas. -s usa CONJUNTO1 si no se está
traduciendo ni borrando; si no, la compresión usa CONJUNTO2 después de
la traducción o el borrado.
Simple y muy funcional :)