Contar líneas únicas en un archivo en Linux

Olorunfemi Akinlua 20 junio 2023
  1. Use los comandos sort y uniq para contar líneas únicas en un archivo
  2. Use el comando awk para contar líneas únicas en un archivo
Contar líneas únicas en un archivo en Linux

Contar las líneas únicas en un archivo es una tarea común en Linux, y se pueden usar varias herramientas y métodos diferentes para realizar esta operación. En general, el método adecuado dependerá de los requisitos y restricciones específicos de la tarea, como el tamaño del archivo de entrada, los requisitos de rendimiento y memoria, y el formato y contenido de los datos.

Use los comandos sort y uniq para contar líneas únicas en un archivo

Un enfoque para contar líneas únicas en un archivo en Linux es usar los comandos sort y uniq. El comando ordenar ordena los datos de entrada en un orden específico, y el comando uniq filtra las líneas duplicadas de los datos ordenados.

El archivo data.txt contiene el contenido a continuación para los ejemplos de este artículo.

arg1
arg2
arg3
arg2
arg2
arg1

Para contar el número de líneas únicas en el archivo, puede usar el siguiente comando:

sort data.txt | uniq -c | wc -l

Producción :

3

Este comando ordena el archivo data.txt en orden ascendente (por defecto) y canaliza la salida al comando uniq. El comando uniq filtra cualquier línea duplicada de los datos ordenados y agrega un recuento de la cantidad de veces que aparece cada línea en la entrada.

Luego, la salida se canaliza al comando wc, que cuenta el número de líneas en la entrada e imprime el resultado en la terminal.

Los comandos sort y uniq son herramientas simples y eficientes para contar líneas únicas en un archivo y son adecuadas para la mayoría de los escenarios comunes. Sin embargo, tienen algunas limitaciones y desventajas, como la necesidad de ordenar los datos de entrada, lo que puede ser lento y consumir mucha memoria para archivos grandes.

Además, el comando uniq solo elimina las líneas duplicadas adyacentes de los datos ordenados, por lo que es posible que no proporcione el resultado esperado para algunas entradas.

Use el comando awk para contar líneas únicas en un archivo

Otro enfoque para contar líneas únicas en un archivo en Linux es usar el comando awk, una poderosa herramienta de procesamiento de texto que puede realizar varias operaciones en archivos de texto. El comando awk tiene una estructura de datos de matriz asociativa incorporada, que puede almacenar y contar las ocurrencias de cada línea en la entrada.

Por ejemplo, para contar el número de líneas únicas en un archivo llamado data.txt, puedes usar el siguiente comando:

awk '!a[$0]++' data.txt | wc -l

Producción :

3

Este comando usa el comando awk para leer el archivo data.txt y aplica una condición simple a cada línea de entrada. La condición usa la expresión !a[$0]++, que incrementa el valor de la matriz a para cada línea leída.

Esto cuenta efectivamente el número de veces que aparece cada línea en la entrada y almacena el recuento en la matriz a.

El comando awk luego aplica el ! operador a la expresión a[$0], que niega el valor del elemento de matriz. Esto significa que solo las líneas con un recuento de 0 en la matriz a pasarán la condición y se imprimirán en la salida.

Luego, la salida se canaliza al comando wc, que cuenta el número de líneas en la entrada e imprime el resultado en la terminal.

El comando awk también proporciona varias opciones y funciones que se pueden usar para controlar su comportamiento y personalizar su salida. Por ejemplo, puede usar la opción -F para especificar un separador de campo diferente o la opción -v para definir una variable que se puede usar en el script.

También puede usar la función printf para formatear la salida del comando awk de varias maneras.

Aquí hay un ejemplo de un script awk más complejo que usa estas funciones para contar el número de líneas únicas en un archivo llamado data.txt, donde cada línea es una lista de campos separados por comas:

awk -F, '{a[$1]++} END {for (i in a) { printf "%s,%d\n", i, a[i] }}' data.txt | wc -l

Producción :

3

Este script usa la opción -F para especificar el carácter , como separador de campo, y define una matriz a que se usa para almacenar y contar las ocurrencias de cada campo en la entrada.

El comando awk luego lee cada línea del archivo data.txt e incrementa el valor de la matriz a para cada campo leído. Esto cuenta efectivamente la cantidad de veces que aparece cada campo único en la entrada.

El bloque FIN del script se ejecuta después de que se hayan leído todas las líneas de la entrada, y itera sobre la matriz a usando el bucle for. La función printf se usa para formatear la salida del comando awk, e imprime cada campo único y su cuenta en la salida.

Luego, la salida se canaliza al comando wc, que cuenta el número de líneas en la entrada e imprime el resultado en la terminal.

En conclusión, hay varias formas de contar líneas únicas en un archivo en Linux, y el método apropiado dependerá de los requisitos y restricciones específicos de la tarea. Los comandos sort y uniq son herramientas simples y eficientes para contar líneas únicas, y el comando awk proporciona funciones y opciones más avanzadas para personalizar la salida y el comportamiento del script.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - Linux File