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