GNU/Linux >> Tutoriales Linux >  >> Linux

Comando Linux comm con ejemplos

Introducción

El comm El comando es una sencilla utilidad de Linux para comparar archivos centrándose en el contenido común. El comando compara dos archivos ordenados línea por línea y muestra los resultados en tres columnas.

La siguiente guía explicará cómo usar Linux comm comando con ejemplos.

Requisitos previos

  • Un sistema que ejecuta Linux.
  • Acceso a la terminal.

Sintaxis del comando comm

El comm El comando se ejecuta con al menos dos argumentos que indican los nombres de los archivos que se compararán. Agregar opciones antes de los nombres de archivo personaliza la salida.

El comm básico la sintaxis es:

comm [file_name_1] [file_name_2]
comm [options] [file_name_1] [file_name_2]

Sin embargo, al ejecutar comm sin ninguna opción no proporciona resultados e imprime el siguiente resultado:

Opciones de comando de comunicación

Usando comm es simple, pero agregar opciones proporciona personalización adicional.

La siguiente tabla incluye todos los comm opciones:

Comando Descripción
-1 Imprime la salida sin la primera columna, ocultando las líneas exclusivas del primer archivo.
-2 Oculta la segunda columna en la salida (líneas exclusivas del segundo archivo).
-3 No imprime la columna que contiene las líneas comunes.
--check-order Comprueba si los archivos están ordenados.
--nocheck-order Imprime el resultado sin comprobar si los archivos están ordenados.
--output-delimiter=[any character] Reemplaza los espacios predeterminados en la salida con otro carácter.
--total Muestra el número total de líneas en cada columna.
-z Muestra las líneas de salida como terminadas en NULL en lugar de la salida predeterminada terminada en nueva línea.
--help Muestra información de ayuda.
--version Muestra información de la versión.

Ejemplos de comunicación de Linux

El comm El comando funciona con dos archivos ordenados. Para entender cómo comm funciona, configure un entorno de prueba:

  1. Cree dos archivos de prueba.
  2. Nombre los archivos (por ejemplo, Archivo_1 y Archivo_2).
  3. Agregue diferentes palabras o números a cada archivo.
  4. Asegúrese de que parte del contenido se superponga.

Nota: Linux ofrece numerosas formas de crear archivos desde la terminal. La forma más fácil es usar el comando táctil.

Use el comando cat para mostrar el File_1 y Archivo_2 contenido. El resultado muestra que los archivos se superponen en tres palabras (art , perro y camino ):

Las siguientes secciones usan File_1 y Archivo_2 para explicar cómo comm funciona.

Comparar dos archivos

Compara dos archivos ordenados línea por línea con:

comm File_1 File_2

El comando imprime los resultados en tres columnas:

  • Columna 1 muestra solo valores exclusivos del primer archivo.
  • Columna 2 imprime elementos presentes solo en el segundo archivo.
  • Columna 3 muestra contenido común para ambos archivos:art , perro y camino .

Ocultar columnas

Usar argumentos -1 , -2 y -3 y las combinaciones para mostrar solo columnas particulares. Por ejemplo, imprima solo líneas comunes para ambos archivos con:

comm -12 File_1 File_2

Usando -12 con comm oculta la primera y la segunda columna, dejando solo la que contiene líneas compartidas por ambos archivos.

Por otro lado, -3 oculta la columna tres y muestra líneas únicas para cada archivo:

comm -3 File_1 File_2

Ignorar caso

Comparación con comm distingue entre mayúsculas y minúsculas. Todas las palabras en File_1 y Archivo_2 están en minúsculas, por lo que comm reconoce el arte , perro y camino como común para ambos archivos.

Sin embargo, si, por ejemplo, la palabra arte está en mayúsculas en File_1 pero en minúsculas en File_2, la salida es:

Diferencias entre mayúsculas y minúsculas con la palabra arte /Arte entre dos archivos indica comm para registrar la palabra como única para cada archivo. Mientras que comm no acepta -i como opción para ignorar mayúsculas y minúsculas, la opción tr proporciona una solución alternativa.

Usa Tr en los dos archivos para convertir mayúsculas y luego redirigir la salida a archivos temporales (Temp_1 , Temp_2 ):

tr A-Z a-z <File_1 > Temp_1
tr A-Z a-z <File_2 > Temp_2

Tr convierte el contenido de ambos archivos a minúsculas y crea nuevos archivos para guardar la salida (Temp_1 , Temp_2 ). Los archivos originales permanecen sin cambios.

Ejecute comm en Temp_1 y Temp_2 para comparar archivos mientras se "ignora" mayúsculas y minúsculas:

comm Temp_1 Temp_2

El comando genera arte en minúsculas como palabra común para ambos archivos.

Comparar archivos sin clasificar

El comm El comando solo produce una salida valiosa cuando los archivos ordenados se usan como argumentos. Cuando comm funciona con archivos desordenados, la salida no se puede utilizar y siempre muestra un mensaje de error.

Por ejemplo, los dos archivos siguientes no están ordenados, como se muestra con cat :

Cuando usas comm en archivos sin clasificar, la salida imprime:

Mientras que comm empareja ciertas líneas y produce una salida, la salida es incompleta e inutilizable. El mensaje de error especifica que ninguno de los archivos está ordenado.

Para verificar que los archivos no estén ordenados, use comm --check-order :

comm --check-order Not_Sorted_File_1 Not_Sorted_File_2

El --check-order La opción imprime el mensaje de error y detiene comm de comparar archivos en el primer elemento sin clasificar.

Para forzar comm para imprimir una salida y ocultar el mensaje de error, use --nocheck-order :

comm --nocheck-order Not_Sorted_File_1 Not_Sorted_File_2

La salida no es fiable. Por ejemplo, la palabra arte está presente en las columnas uno y dos, aunque es común para ambos archivos.

La manera segura de usar comm con archivos sin ordenar es aplicar la ordenación. Ejecute lo siguiente:

comm <(sort Not_Sorted_File_1 ) <(sort Not_Sorted_File_2)

El resultado muestra que las palabras arte , perro y camino son comunes para ambos archivos.

Tenga en cuenta que sort sin argumentos solo afecta la salida estándar y no cambia los archivos fuente. Aún así, sort se puede usar con otros comm opciones

Por ejemplo, para imprimir solo palabras comunes para ambos archivos sin ordenar, use:

comm -12 <(sort Not_Sorted_File_1 ) <(sort Not_Sorted_File_2)

Para ordenar los archivos de origen y luego ejecutar comm , utilice sort -o . El -o El argumento guarda la salida ordenada en un archivo específico.

Por ejemplo, ordene Not_Sorted_File_1 y guarde la salida en ese mismo archivo con:

sort -o Not_Sorted_File_1 Not_Sorted_File_1

Ejecutando cat después de ordenar el archivo muestra que el archivo está ordenado ahora. Repita el mismo proceso para el segundo archivo:

sort -o Not_Sorted_File_2 Not_Sorted_File_2

Ejecute comm para comparar archivos:

comm Not_Sorted_File_1 Not_Sorted_File_2

Comparar directorios

Usa comm con ls para comparar nombres de archivo en dos directorios. Por ejemplo, compare Directorio1 y Directorio2 :

comm <(ls Directory1) <(ls Directory2)

La primera columna representa los nombres de archivo exclusivos de Directorio1 , el segundo aquellos exclusivos de Director y2 y el tercero representa nombres de archivo comunes para ambas carpetas.

Al ejecutar comm con ls , el comando solo mira los nombres de los archivos, no el contenido. Los archivos enumerados como comunes para ambas carpetas aún pueden diferir incluso si tienen el mismo nombre.

Usar comunicación con STDIN

Para comparar un archivo con una entrada de terminal estándar, use un guión como uno de los argumentos con comm .

Por ejemplo, compare File_1 con la entrada estándar usando:

comm File_1 -

Escribe texto para comparar File_1 directamente a la terminal o use un editor de texto.

Después de pulsar Intro , el comando imprime la salida en tres columnas, utilizando STDIN en lugar de File_2.

La primera columna representa el contenido exclusivo de File_1 , el segundo muestra palabras encontradas solo en la entrada estándar y el tercero palabras comunes para ambos.

Cambiar el separador predeterminado

El comm la salida separa las columnas con espacios de forma predeterminada. Para cambiar el separador, use el --output-delimiter opción.

Por ejemplo, para usar * en lugar de espacios, ejecuta:

comm --output-delimiter=* File_1 File_2

El resultado muestra que las palabras en File_1 no tienen asterisco, los de File_2 tienen un asterisco, y los elementos comunes para ambos archivos tienen dos asteriscos.

Mostrar recuentos de líneas

Muestra el número total de líneas en cada columna con el --total opción:

comm --total File_1 File_2

La salida imprime el número de líneas en la parte inferior de cada columna.

Conclusión

Después de seguir los pasos de este tutorial, sabrá cómo comparar archivos línea por línea con el comm dominio.

A continuación, aprenda una forma diferente de comparar archivos con el comando diff.


Linux
  1. Comando wc Linux con ejemplos

  2. Comando Linux Tee con ejemplos

  3. Comando JQ en Linux con ejemplos

  4. Comando "comm" en Linux con ejemplos

  5. Comando rsync de Linux con ejemplos prácticos

Tutorial de comandos Linux zforce con ejemplos

15 comandos ps de Linux con ejemplos

Comando Find de Linux con ejemplos prácticos

Comando IP de Linux con ejemplos

Tutorial de comando de búsqueda de Linux (con ejemplos)

Comando lsof en Linux con ejemplos