lunes, 26 de abril de 2010

Convertir el contenido de un archivo de minúsculas a mayúsculas.

Pues me surgió la necesidad de convertir a mayúsculas un buen número de archivos, primero pensé en realizar un programa en algún lenguaje de programación, después cambié de opinión y opté por hacer un script en bash, suponiendo que me seria más rápido y fácil hacerlo, entonces intente primero con tr:
echo "aeiou-xyz" | tr '[a-z]' '[A-Z]'
AEIOU-XYZ
Hasta ahí parece que todo va bien, pero hay un inconveniente, cuando las palabras tienen acentos, no funciona bien, las letras que tienen acento, se quedan como estan originalmente, lo mismo pasa con awk:
echo "aeiouáéíóú" | awk '{print toupper($0);}'
AEIOUáéíóú
Bueno al final, después de documentarme un poco más llegue a una solución para salir del problema:
#!/bin/bash
for file in *
do
    tr '[a-z]' '[A-Z]' < $file | sed 'y/áéíóú/ÁÉÍÓÚ/' > /ruta/carpeta/salida/$file
done
----
NOTA: Como mi blog publica los artículos en el buzz, un amigo (Jose Luis Balle) ha dado una solución aún más simple usando solo tr:
echo "áaeóiou-xyz" | tr '[a-z][áéíóú]' '[A-Z][ÁÉÍÓÚ]'
ÁAEÓIOU-XYZ

0 comentarios:

Publicar un comentario