Linux / Comando comm: comparar líneas de archivos ordenados
comm compara dos archivos ordenados línea por línea y distribuye el resultado en tres columnas: líneas exclusivas del primero, líneas exclusivas del segundo y líneas comunes.
En la salida predeterminada, la segunda columna lleva una tabulación inicial y la tercera lleva dos. Las opciones -1, -2 y -3 ocultan columnas. Para estudiar cambios según la posición del texto, diff suele ser más adecuado.
Sintaxis básica
comm [opciones] archivo1_ordenado archivo2_ordenado
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man comm en el sistema actual.
Ejemplos de uso
Ver los tres tipos de líneas
Se comparan después de ordenar ambos archivos con el mismo criterio.
comm old.sorted new.sorted
Mostrar solo las líneas comunes
Oculte la primera y la segunda columna para dejar solamente la tercera columna común.
comm -12 old.sorted new.sorted
Líneas que solo están en el segundo archivo
Oculte la primera columna y la columna común.
comm -13 old.sorted new.sorted
Leer tres columnas y filas comunes
comm separa líneas exclusivas y comunes; -12 oculta las dos primeras columnas y deja solo las comunes. Use un directorio de práctica donde no existan first.txt ni second.txt, ya que los comandos siguientes crean o sobrescriben esos archivos.
printf 'apple\nbanana\n' > first.txt
printf 'banana\ncherry\n' > second.txt
comm -12 first.txt second.txt
Ejemplo de salida:
banana
Los dos archivos deben estar previamente ordenados en la misma configuración regional. No se puede confiar en el significado de las columnas si la entrada no está ordenada. Recuerde también que comm compara la existencia de las filas, mientras que diff muestra los cambios incluyendo la posición de las líneas.
Opciones y formatos principales
| Opciones·Formato | Descripción |
|---|---|
-1 |
Ocultar la columna de las filas que están solo en el primer archivo. |
-2 |
Ocultar la columna de las filas que están solo en el segundo archivo. |
-3 |
Ocultar la columna de las filas comunes a ambos archivos. |
--check-order |
Verifica el orden de clasificación en la implementación de GNU. |
Precauciones al usar
Ordene los archivos de entrada en la misma configuración regional. Por ejemplo, los archivos creados con LC_ALL=C sort también se comparan en la misma configuración regional. comm compara filas ordenadas, no la cantidad por clave del conjunto, por lo que debe determinar previamente el significado de las filas duplicadas.
Preguntas frecuentes
¿Qué significan las columnas del resultado de comm?
La primera columna corresponde solo al archivo 1, la segunda columna solo al archivo 2, y la tercera columna corresponde a las filas comunes a ambos archivos.
Documentación oficial
El comportamiento exacto de las opciones y las diferencias según la implementación se pueden consultar en la documentación oficial de comm.




