Si tenemos que comparar el contenido de dos archivos, probablemente querramos saber qué líneas tienen en común. Para lograr eso, Linux nos provee varias alternativas. En primer lugar, en este post aprenderemos a usar comm
. Esta herramienta nos permitirá visualizar las líneas comunes, y también aquellas que solamente estén presentes en uno de los archivos. En Linux, ¡con un solo comando podremos realizar esta tarea!
Cómo usar comm
Para empezar, crearemos dos archivos en los que a propósito incluiremos líneas con el mismo contenido en ambos. Les daremos el nombre de archivo1 y archivo2, con los siguientes contenidos en cada uno:
archivo1:
Fulano David Mengano Roberto Juan Pepe Alberto Armando Esteban Julio
archivo2:
Gabriel Suntano Miguel Fulano David Sancho Pepe Fabricio Toto Ale
Si ambos archivos estuvieran ordenados previamente (lo cual vemos que no sucede en archivo1 y archivo2), podríamos simplemente ejecutar
comm archivo1 archivo2
En este caso tenemos que ordenar el contenido de los archivos de alguna manera antes de que comm
los procese. Por eso, utilizaremos sort
y redirigiremos el contenido ordenando a comm
:
comm <(sort archivo1) <(sort archivo2)
En el próximo apartado analizaremos el resultado del comando anterior y de comm
en general.
Los resultados
A continuación, veamos en la Fig. 1 la comparación de archivo1 y archivo2:
En las columna 1 y 2 podemos ver las líneas específicas de archivo1 y archivo2, respectivamente. Por otro lado, en la columna 3 vemos el contenido común de ambos. Este es el comportamiento por defecto de esta herramienta.
Si quisiéramos mostrar parte de esta información (por ejemplo, las líneas que aparecen en uno solo de los archivos, o los que aparecen en ambos solamente) podemos utilizar colocar los números de las columnas que deseamos omitir. Por ejemplo,
comm -12 <(sort archivo1) <(sort archivo2)
nos devolverá únicamente las líneas presentes en ambos archivos (notar que -12 significa omitir las columnas 1 y 2).
¡Nos leemos en breve!
¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!