jueves, 14 de octubre de 2010

Linux : comando cut , sort , wc y uniq para contar registros unicos en un archivo de texto

Partimos de un archivo de texto en el que los registros aparecen separados por comas (csv) o por tabuladores. Este archivo puede provenir de una exportación de una tabla de la base de datos y queremos verificar si está correcto dicho archivo. Para ello usaremos algunos comandos unix para verificar el número de registros, o si el número de valores únicos de una columna es correcto.

Los comandos que usaremos serán:
- comando wc
- comando sort
- comando cut
-comando uniq

Contar el número de filas en un archivo csv

Usaremos únicamente el comnado:
wc -l archivo.csv

Que nos devolverá el número de filas

Contar el número de registros diferentes en un campo (similar a select count(distinct campo))

Suponemos que queremos ver cuantos registros diferentes del campo3 hay en archivo.csv (separador por tabuladores):
cut -f 3 archivo.csv | sort | uniq | wc -l

Si el archivo usase otro separador por ejemplo la coma ( , ) :
cut -t, -f 3 archivo.csv | sort | uniq | wc -l

Tambien podemos suprimir el comnado uniq:
cut -t, -f 3 archivo.csv | sort -u | wc -l

No hay comentarios: