LINUX

Cómo eliminar líneas comunes de dos archivos en Linux

¿Cómo puedo eliminar líneas que contienen texto coincidente de dos archivos en Linux? Analicemos cómo realizar esta tarea usando el comando de comunicación y ordenación de Linux.

Supongamos que tiene dos archivos, digamos archivo1 y archivo2, con el siguiente contenido:

$ cat file1
test@domain.com
test2@domain.com
dom@domain.com
test3@domain.com
$ cat file2
test2@domain.com
test3@domain.com

El propósito es obtener un archivo con contenido que sea exclusivo de file1 (las líneas coincidentes de file2 deben eliminarse de file1).

Entonces, el archivo resultante debería ser el siguiente.

$ cat file3
test@domain.com
dom@domain.com

Esto se puede hacer con el comando de Linux «comm». La sintaxis básica de este comando es la siguiente:

comm [-1] [-2] [-3 ] file1 file2
-1 Suppress the output column of lines unique to file1.
-2 Suppress the output column of lines unique to file2.
-3 Suppress the output column of lines duplicated in file1 and file2.
file1 Name of the first file to compare.
file2 Name of the second file to compare.

Antes de aplicar “comm”, necesitamos ordenar los archivos de entrada. Entonces, para obtener las líneas exclusivas del archivo1, podemos usar una combinación de comandos «comm» y «sort» de la siguiente manera.

$ comm -23 <(sort file1) <(sort file2) > file3

El comando anterior creará el archivo file3 con el contenido exclusivo de file1 y file2. Puedes leer páginas del comando man comm para más detalles.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar