Eliminar líneas duplicadas en Bash

Olorunfemi Akinlua 20 junio 2023
  1. Use sort y uniq para eliminar líneas duplicadas en Bash
  2. Use el comando awk para eliminar líneas duplicadas en Bash
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 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