Contar líneas únicas en un archivo es una tarea común en Linux. Este artículo presenta dos métodos eficientes en la línea de comandos: usando sort
y uniq
, y usando awk
.
Tabla de contenido
Contando líneas únicas con sort
y uniq
Este método combina el poder de sort
y uniq
para un enfoque directo. sort
ordena las líneas alfabéticamente, un requisito previo para uniq
, que cuenta solo las líneas idénticas consecutivas. La opción -c
en uniq
agrega un prefijo de conteo a cada línea.
Para contar líneas únicas en file.txt
:
sort file.txt | uniq -c
Esto muestra cada línea única con su conteo. Para obtener el número total de líneas únicas, canalice la salida a wc -l
:
sort file.txt | uniq -c | wc -l
Ejemplo:
Si file.txt
contiene:
manzana
plátano
manzana
naranja
plátano
manzana
sort file.txt | uniq -c
produce:
3 manzana
2 plátano
1 naranja
Y sort file.txt | uniq -c | wc -l
produce:
3
Contando líneas únicas con awk
awk
ofrece una solución flexible, particularmente útil para escenarios más complejos. Este método emplea una matriz asociativa para rastrear líneas únicas y sus conteos.
Para contar líneas únicas y mostrarlas con sus conteos:
awk '{count[$0]++} END {for (line in count) print count[line], line}' file.txt
Este script incrementa el conteo para cada línea en la matriz count
, usando la línea como clave. El bloque END
itera a través de la matriz, imprimiendo el conteo de cada línea y la línea misma.
Para obtener solo el conteo total de líneas únicas:
awk '{count[$0]++} END {print length(count)}' file.txt
Esto usa length(count)
para mostrar directamente el número de líneas únicas (el tamaño de la matriz).
Ejemplo:
Usando el mismo file.txt
, el primer comando awk
produce la misma salida que el método sort | uniq -c
. El segundo comando awk
produce 3
, indicando tres líneas únicas.
Elija el método que mejor se adapte a sus necesidades. sort
y uniq
son más simples para tareas básicas; awk
proporciona mayor flexibilidad para escenarios complejos.