comm: La herramienta esencial para contrastar archivos en Linux

Al trabajar con información en Linux, resulta imprescindible contar con herramientas que nos permitan comparar y analizar datos. Esto es especialmente cierto cuando manejamos archivos con listas o registros. Aquí es donde comm entra en juego, ofreciendo una forma eficiente de contrastar dos archivos línea por línea. En este artículo, nos adentraremos en la utilidad de comm en sistemas basados en Ubuntu y Debian, presentando una guía sencilla para todos, sin importar si es tu primera vez usando la consola de Linux o si ya eres un usuario avanzado.

Descifrando el funcionamiento de comm

Para aprovechar al máximo cualquier herramienta, primero debemos entender su esencia y funcionamiento.

¿Qué hace exactamente comm?

comm es un programa que compara dos archivos, siempre y cuando estén ordenados. A diferencia de otras herramientas de comparación, comm descompone las diferencias en tres categorías:

  1. Líneas que sólo aparecen en el primer archivo.
  2. Líneas que sólo aparecen en el segundo archivo.
  3. Líneas que aparecen en ambos archivos.

Estructura básica del comando

La estructura fundamental para ejecutar comm es:

comm archivo1 archivo2

Con esta instrucción, obtendremos una salida dividida en tres columnas, correspondientes a las tres categorías antes mencionadas.

Aplicaciones prácticas y ejemplos de comm

Conocer el comando es un primer paso; aplicarlo correctamente es donde realmente se ve su potencia.

Comparando listas de empleados

Supongamos que tienes dos listas: empleados_2022.txt y empleados_2023.txt, y quieres conocer quiénes continúan, quiénes se han ido y quiénes son nuevos:

comm empleados_2022.txt empleados_2023.txt

El resultado mostrará en la primera columna los empleados que ya no están, en la segunda los nuevos empleados y en la tercera los que continúan.

Ocultando columnas específicas

Si sólo estás interesado en, por ejemplo, los empleados nuevos y los que se han ido, puedes ocultar la tercera columna:

comm -3 empleados_2022.txt empleados_2023.txt

Comparación con otros comandos

Mientras diff resalta las diferencias entre archivos, comm permite un análisis más estructurado, especialmente útil cuando trabajamos con listados ordenados.

Opciones y personalizaciones avanzadas

comm tiene una serie de opciones que nos permiten adaptar su comportamiento a nuestras necesidades.

Trabajando con archivos no ordenados

Aunque comm requiere archivos ordenados, puedes combinarlo con sort para ordenar al vuelo:

comm <(sort archivo1.txt) <(sort archivo2.txt)

Ignorando diferencias de mayúsculas y minúsculas

En algunos casos, quizás desees comparar archivos sin considerar diferencias de capitalización:

comm -i <(sort archivo1.txt) <(sort archivo2.txt)

Automatizando tareas con comm

Al integrar comm en scripts y combinarlo con otras herramientas, su potencial se multiplica, permitiéndote realizar análisis detallados de manera automatizada.