Eliminar líneas duplicadas en Bash
-
Use
sort
yuniq
para eliminar líneas duplicadas en Bash -
Use el comando
awk
para eliminar líneas duplicadas en Bash
Las entradas duplicadas pueden causar varios problemas en un script de Bash, como resultados incorrectos o incoherentes, y también pueden dificultar el mantenimiento del script. A menudo es necesario eliminar las entradas duplicadas del script para evitar estos problemas, y existen numerosas formas de hacerlo en Bash.
Use sort
y uniq
para eliminar líneas duplicadas en Bash
Un enfoque para eliminar entradas duplicadas en un script Bash es usar los comandos ordenar
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 eliminar entradas duplicadas del archivo anterior, puede usar el siguiente comando:
sort data.txt | uniq > data-unique.txt
Salida (touch data-unique.txt
):
arg1
arg2
arg3
Este comando ordena el archivo data.txt
en orden ascendente (por defecto) y canaliza la salida al comando uniq
. El comando uniq
filtra las líneas duplicadas de los datos ordenados y escribe el resultado en un nuevo archivo llamado data-unique.txt
.
Esto eliminará todas las entradas duplicadas del archivo data.txt
y creará un nuevo archivo con entradas únicas.
El comando uniq
tiene varias opciones que se pueden usar para controlar su comportamiento, como la opción -d
para imprimir solo líneas duplicadas, o la opción -c
para imprimir un recuento de la cantidad de veces que aparece cada línea. en la entrada. Por ejemplo, para imprimir el número de veces que aparece cada línea en el archivo data.txt
, puede utilizar el siguiente comando:
sort data.txt | uniq -c
Este comando es similar al anterior pero añade la opción -c
al comando uniq
. Esto imprimirá el recuento de la cantidad de veces que aparece cada línea en la entrada y la línea en sí.
Por ejemplo, el resultado podría verse así:
2 arg1
3 arg2
1 arg3
Esta salida muestra que aparece la Línea 1.
Use el comando awk
para eliminar líneas duplicadas en Bash
Otro enfoque para eliminar entradas duplicadas en un script Bash es usar el comando awk
, una poderosa herramienta de procesamiento de texto que puede ejecutar numerosas 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 eliminar entradas duplicadas del mismo archivo anterior, puede usar el siguiente comando:
awk '!a[$0]++' data.txt > data-unique.txt
Producción :
arg1
arg2
arg3
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 redirige a un nuevo archivo llamado data-unique.txt
, que contiene entradas únicas del archivo data.txt
.
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 en el script.
También puede usar la función printf
para formatear la salida del comando awk
de varias maneras.
Los comandos sort
y uniq
son herramientas simples y eficientes para eliminar entradas duplicadas, 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