Verticalizar matrices

Verticalizar en menos de 8 seg


Saber el número de columnas de un fichero de datos a veces no es tan sencillo. No es la primera y no será la última vez que vea que para saber cuantas columnas tiene un fichero de datos este se importa en un excel y se cuentan las columnas, eso si, en ficheros de datos de enorme tamaño es un poco absurdo.

Existen varias formas para saber cuantas columnas hay en un fichero, pero como en todo, las formas y los métodos son importantes si queremos ser eficientes.


Total, que supongamos que tenemos un fichero de 50.000 filas por 120 columnas, importarlo en un excel puede ser una solución, pero desde luego poco cómoda, poco rápida y menos aún eficiente.

Podemos obtener el número de columnas de un fichero construyendo un fichero bat que le pasemos por argumento el nombre del fichero de datos y nos verticalice la primera fila de datos obteniendo el número de columnas del fichero.

Prefiero hacerlo en Windows en una consola de MS DOS que hacerlo directamente en Unix ya que por regla general la gente usa más Windows. Detalle eso si, instalarse los comandos de Unix en Windows.

El script

c:\Temp\cat verticaliza.bat
@echo off
set name=%1
cat %name% | head -1 | sed "s/;/ ;/g" | xargs -n 1 | nl | sed "s/;//g"

Mostramos el contenido del fichero de datos separado por ";" destacar que en la primera fila hay espacios en blanco o signos ; contiguos para forzar más casuisticas para comprobar que la verticalización aplica a todos los casos.

Los datos

c:\Temp\cat datos.dat
enero;febrero;marzo;abril; ;a;;
junio;julio;agosto;septiembre

El lanzamiento y resultado

Si lanzamos el comando verticaliza pasando por argumento el fichero de datos obtenemos la primera fila verticalizada.
c:\Temp\verticaliza datos.dat
     1  enero
     2  febrero
     3  marzo
     4  abril
     5
     6  a
     7
     8

Ejecutar comandos de Unix en una consola de msdos "vitaminada" es necesario.




0 comentarios: