GNU/Linux >> Linux Esercitazione >  >> Linux

Comando di comunicazione Linux con esempi

Introduzione

Il comm command è una semplice utility Linux per confrontare i file concentrandosi sul contenuto comune. Il comando confronta due file ordinati riga per riga e visualizza i risultati in tre colonne.

La seguente guida spiegherà come utilizzare Linux comm comando con esempi.

Prerequisiti

  • Un sistema che esegue Linux.
  • Accesso al terminale.

Sintassi del comando di comunicazione

Il comm comando viene eseguito con almeno due argomenti che indicano i nomi dei file da confrontare. L'aggiunta di opzioni prima dei nomi dei file personalizza l'output.

Il comm di base la sintassi è:

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

Tuttavia, eseguendo comm senza alcuna opzione non fornisce risultati e stampa il seguente output:

Opzioni comando di comunicazione

Utilizzando comm è semplice, ma l'aggiunta di opzioni fornisce ulteriore personalizzazione.

La tabella seguente include tutti i comm opzioni:

Comando Descrizione
-1 Stampa l'output senza la prima colonna, nascondendo le righe univoche del primo file.
-2 Nasconde la seconda colonna nell'output (righe univoche del secondo file).
-3 Non stampa la colonna contenente le righe comuni.
--check-order Verifica se i file sono ordinati.
--nocheck-order Stampa il risultato senza controllare se i file sono ordinati.
--output-delimiter=[any character] Sostituisce gli spazi predefiniti nell'output con un altro carattere.
--total Mostra il numero totale di righe in ogni colonna.
-z Visualizza le righe di output come NULL-terminated invece dell'output predefinito con newline-terminated.
--help Mostra le informazioni della guida.
--version Visualizza le informazioni sulla versione.

Esempi di comunicazione Linux

Il comm comando funziona con due file ordinati. Per capire come comm funziona, imposta un ambiente di test:

  1. Crea due file di prova.
  2. Assegna un nome ai file (ad esempio, File_1 e File_2).
  3. Aggiungi parole o numeri diversi a ciascun file.
  4. Assicurati che alcuni contenuti si sovrappongano.

Nota: Linux offre numerosi modi per creare file dal terminale. Il modo più semplice è utilizzare il comando touch.

Utilizza il comando cat per visualizzare il File_1 e File_2 contenuto. L'output mostra che i file si sovrappongono in tre parole (art , cane e modo ):

Le seguenti sezioni utilizzano File_1 e File_2 per spiegare come comm funziona.

Confronta due file

Confronta due file ordinati riga per riga con:

comm File_1 File_2

Il comando stampa i risultati in tre colonne:

  • Colonna 1 mostra solo i valori univoci del primo file.
  • Colonna 2 stampa gli elementi presenti solo nel secondo file.
  • Colonna 3 mostra il contenuto comune per entrambi i file:art , cane e modo .

Nascondi colonne

Usa argomenti -1 , -2 e -3 e le combinazioni per visualizzare solo colonne particolari. Ad esempio, stampa solo righe comuni per entrambi i file con:

comm -12 File_1 File_2

Utilizzando -12 con comm nasconde la prima e la seconda colonna, lasciando solo quella contenente le righe condivise da entrambi i file.

D'altra parte, -3 nasconde la colonna tre e mostra le righe univoche per ogni file:

comm -3 File_1 File_2

Ignora caso

Confronto con comm fa distinzione tra maiuscole e minuscole. Tutte le parole in File_1 e File_2 sono minuscole, quindi comm riconosce l'arte , cane e modo come comune per entrambi i file.

Tuttavia, se, ad esempio, la parola arte è maiuscolo in File_1 ma minuscolo in File_2, l'output è:

Differenze tra maiuscole e minuscole con la parola arte /Arte tra due file richiede comm per registrare la parola come univoca per ogni file. Mentre comm non accetta -i come opzione per ignorare maiuscole e minuscole, l'opzione tr fornisce una soluzione alternativa.

Usa Tr sui due file per convertire le maiuscole e minuscole e quindi reindirizzare l'output ai file temporanei (Temp_1 , Temp_2 ):

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

Tr converte il contenuto di entrambi i file in minuscolo e crea nuovi file per salvare l'output (Temp_1 , Temp_2 ). I file originali rimangono invariati.

Esegui comm su Temp_1 e Temp_2 per confrontare i file "ignorando" maiuscole e minuscole:

comm Temp_1 Temp_2

Il comando restituisce art minuscolo come parola comune per entrambi i file.

Confronta file non ordinati

Il comm comando produce un output prezioso solo quando i file ordinati vengono utilizzati come argomenti. Quando comm funziona con file non ordinati, l'output non è utilizzabile e stampa sempre un messaggio di errore.

Ad esempio, i due file seguenti non vengono ordinati, come mostrato con cat :

Quando utilizzi comm sui file non ordinati, l'output stampa:

Mentre comm accoppia determinate righe e produce un output, l'output è incompleto e inutilizzabile. Il messaggio di errore specifica che nessuno dei due file è in ordine.

Per verificare che i file non siano ordinati, utilizza comm --check-order :

comm --check-order Not_Sorted_File_1 Not_Sorted_File_2

Il --check-order l'opzione stampa il messaggio di errore e interrompe comm dal confronto dei file al primo elemento non ordinato.

Per forzare comm per stampare un output e nascondere il messaggio di errore, utilizzare --nocheck-order :

comm --nocheck-order Not_Sorted_File_1 Not_Sorted_File_2

L'output non è affidabile. Ad esempio, la parola arte è presente nelle colonne uno e due, anche se è comune a entrambi i file.

Il modo infallibile per utilizzare comm con file non ordinati è applicare l'ordinamento. Eseguire quanto segue:

comm <(sort Not_Sorted_File_1 ) <(sort Not_Sorted_File_2)

L'output mostra che le parole art , cane e modo sono comuni per entrambi i file.

Tieni presente che sort senza argomenti influisce solo sull'output standard e non modifica i file di origine. Comunque, sort può essere utilizzato con altri comm opzioni.

Ad esempio, per stampare solo parole comuni per entrambi i file non ordinati, utilizzare:

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

Per ordinare i file di origine e quindi eseguire comm , usa sort -o . Il -o argomento salva l'output ordinato in un file specifico.

Ad esempio, ordina File_non_ordinato_1 e salva l'output nello stesso file con:

sort -o Not_Sorted_File_1 Not_Sorted_File_1

Esecuzione di cat dopo aver ordinato il file mostra che il file è ora ordinato. Ripeti la stessa procedura per il secondo file:

sort -o Not_Sorted_File_2 Not_Sorted_File_2

Esegui comm per confrontare i file:

comm Not_Sorted_File_1 Not_Sorted_File_2

Confronta directory

Usa comm con ls per confrontare i nomi dei file in due directory. Ad esempio, confronta Directory1 e Directory2 :

comm <(ls Directory1) <(ls Directory2)

La prima colonna rappresenta i nomi di file univoci per Directory1 , il secondo quelli esclusivi di Director y2 e il terzo rappresenta i nomi di file comuni per entrambe le cartelle.

Durante l'esecuzione di comm con ls , il comando esamina solo i nomi dei file, non il contenuto. I file elencati come comuni per entrambe le cartelle potrebbero comunque differire anche se hanno lo stesso nome.

Usa comunicazione con STDIN

Per confrontare un file con l'input standard del terminale, usa un trattino come uno degli argomenti con comm .

Ad esempio, confronta File_1 con lo standard input usando:

comm File_1 -

Scrivi il testo per confrontare File_1 direttamente al terminale o utilizzare un editor di testo.

Dopo aver premuto Invio , il comando stampa l'output in tre colonne, utilizzando STDIN invece di File_2.

La prima colonna rappresenta i contenuti esclusivi di File_1 , la seconda mostra le parole che si trovano solo nello standard input e la terza le parole comuni per entrambi.

Cambia il separatore predefinito

Il comm l'output separa le colonne con spazi per impostazione predefinita. Per modificare il separatore, utilizza il --output-delimiter opzione.

Ad esempio, per utilizzare * invece di spazi, esegui:

comm --output-delimiter=* File_1 File_2

L'output mostra le parole in File_1 non hanno asterisco, quelli in File_2 hanno un asterisco e gli elementi comuni per entrambi i file hanno due asterischi.

Mostra conteggi riga

Mostra il numero totale di righe in ogni colonna con il --total opzione:

comm --total File_1 File_2

L'output stampa il numero di righe in fondo a ciascuna colonna.

Conclusione

Dopo aver seguito i passaggi di questo tutorial, sai come confrontare i file riga per riga con il comm comando.

Quindi, impara un modo diverso per confrontare i file con il comando diff.


Linux
  1. Comando wc Linux con esempi

  2. Comando Tee Linux con esempi

  3. Comando JQ in Linux con esempi

  4. Comando "comm" in Linux con esempi

  5. Comando Linux rsync con esempi pratici

Esercitazione sui comandi zforce di Linux con esempi

15 Comando Linux ps con esempi

Comando Trova Linux con esempi pratici

Comando IP Linux con esempi

Tutorial comando trova Linux (con esempi)

lsof Command in Linux con esempi