Comando comm en Linux con ejemplos – Part 1

comm compara dos archivos ordenados línea por línea y escribe en la salida estándar; las líneas que son comunes y las líneas que son únicas.

Supongamos que tiene dos listas de personas y se le pide que averigüe los nombres disponibles en una y no en la otra, o incluso los comunes a ambas. comm es el comando que te ayudará a lograrlo. Requiere dos archivos ordenados que compara línea por línea.
Antes de discutir algo más, primero veamos la sintaxis del comando comm
: Sintaxis:

$comm [OPTION]... FILE1 FILE2
  • Al usar comm, estamos tratando de comparar dos archivos, por lo tanto, la sintaxis del comando comm necesita dos nombres de archivo como argumentos.
  • Sin OPCIÓN utilizada, comm produce una salida de tres columnas donde la primera columna contiene líneas exclusivas de ARCHIVO1, la segunda columna contiene líneas exclusivas de ARCHIVO2 y la tercera y última columna contiene líneas comunes a ambos archivos.
  • El comando comm solo funciona correctamente si está comparando dos archivos que ya están ordenados .
  • Ejemplo: supongamos que hay dos archivos ordenados file1.txt y file2.txt y ahora usaremos el comando comm para comparar estos dos.

// displaying contents of file1 //
$cat file1.txt
Apaar 
Ayush Rajput
Deepak
Hemant

// displaying contents of file2 //
$cat file2.txt
Apaar
Hemant
Lucky
Pranjal Thakral

Ahora, ejecute el comando comm como:

// using comm command for 
comparing two files //
$comm file1.txt file2.txt
                Apaar
Ayush Rajput
Deepak
                Hemant
        Lucky
        Pranjal Thakral

El resultado anterior contiene tres columnas donde la primera columna está separada por una pestaña cero y contiene los nombres que solo están presentes en el archivo 1.txt, la segunda columna contiene los nombres que solo están presentes en el archivo 2.txt y están separados por una pestaña y la tercera columna contiene los nombres comunes a ambos archivos. archivos y está separado por dos pestañas desde el principio de la línea.
Este es el patrón predeterminado de la salida producida por el comando comm cuando no se usa ninguna opción.

Opciones para el comando de comunicación:

1. -1: suprime la primera columna (líneas exclusivas del primer archivo).
2. -2: suprime la segunda columna (líneas exclusivas del segundo archivo).
3. -3: suprime la tercera columna (líneas comunes a ambos archivos).
4. – -check-order: comprueba que la entrada está ordenada correctamente, incluso si todas las líneas de entrada son emparejables.
5. – -nocheck-order: no comprueba que la entrada esté correctamente ordenada.
6. – -output-delimiter=STR: columnas separadas con la string STR
7. – -help: muestra un mensaje de ayuda y sale.
8. – -version: información de la versión de salida y salida.

Nota:
Las opciones 4 a 8 rara vez se usan, pero las opciones 1 a 3 son muy útiles en términos de la salida que desea el usuario.

Uso de comunicaciones con opciones

1. Uso de las opciones -1, -2 y -3: El uso de estas tres opciones se puede explicar fácilmente con la ayuda de un ejemplo:

//suppress first column using -1//
$comm -1 file1.txt file2.txt
         Apaar
         Hemant
 Lucky
 Pranjal Thakral

//suppress second column using -2//
$comm -2 file1.txt file2.txt
        Apaar
Ayush Rajput
Deepak
        Hemant

//suppress third column using -3//
$comm -3 file1.txt file2.txt             
Ayush Rajput
Deepak       
        Lucky
        Pranjal Thakral

Tenga en cuenta que también puede suprimir varias columnas usando estas opciones juntas como:

//...suppressing multiple columns...//

$comm -12 file1.txt file2.txt
Apaar
Hemant

/* using -12 together suppressed both first
and second columns */

2. Uso de la opción -check-order: esta opción se usa para verificar si los archivos de entrada están ordenados o no y, en caso de que alguno de los dos archivos esté ordenado incorrectamente, el comando comm fallará con un mensaje de error.

$comm - -check-order f1.txt f2.txt

El comando anterior produce la salida normal si tanto f1.txt como f2.txt están ordenados y solo da un mensaje de error si alguno de los dos archivos no está ordenado.

3. Uso de la opción -nocheck-order: en caso de que no desee comprobar si los archivos de entrada están ordenados o no, utilice esta opción. Esto se puede explicar con la ayuda de un ejemplo.

//displaying contents of unsorted f1.txt//

$cat f1.txt
Parnjal 
Kartik 

//displaying contents of sorted file f2.txt//

$cat f2.txt
Apaar
Kartik

//now use - -nocheck-order option with comm//

$comm - -nocheck-order f1.txt f2.txt
Pranjal
        Apaar
                Kartik

/*as this option forced comm not to check
 the sorted order that's why the output 
comm produced is also 
not in sorted order*/

4 . – Opción -output-delimiter=STR: De manera predeterminada, las columnas en la salida del comando comm están separadas por espacios como se explicó anteriormente. Sin embargo, si lo desea, puede cambiar eso y tener una string de su elección como separador. Esto se puede hacer usando la opción –output-delimiter. Esta opción requiere que especifique la string que desea usar como separador.
Sintaxis:

$comm - -output-delimiter=STR FILE1 FILE2

EJEMPLO:

//...comm command with - -output-delimiter=STR option...//

$comm - -output-delimiter=+file1.txt file2.txt
++Apaar
Ayush Rajput
Deepak
++Hemant
+Lucky
+Pranjal Thakral

/*+ before content indicates content of 
second column and ++ before content 
indicates content of third column*/ 

Entonces, eso es todo sobre el comando de comunicación y sus opciones.

Publicación traducida automáticamente

Artículo escrito por Kartik Thakral y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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