Contar líneas únicas en un archivo en Linux
-
Use los comandos
sort
yuniq
para contar líneas únicas en un archivo -
Use el comando
awk
para contar líneas únicas en un archivo
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 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