GNU/Linux >> Znalost Linux >  >> Linux

Linux comm Command s příklady

Úvod

comm command je jednoduchá linuxová utilita pro porovnávání souborů se zaměřením na běžný obsah. Příkaz porovná dva seřazené soubory řádek po řádku a zobrazí výsledky ve třech sloupcích.

Následující příručka vysvětlí, jak používat Linux comm příkaz s příklady.

Předpoklady

  • Systém se systémem Linux.
  • Přístup k terminálu.

comm syntaxe příkazu

comm Příkaz se spustí s alespoň dvěma argumenty uvádějícími názvy porovnávaných souborů. Přidáním voleb před názvy souborů přizpůsobíte výstup.

Základní comm syntaxe je:

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

Probíhá však comm bez jakýchkoli voleb neposkytuje výsledky a vytiskne následující výstup:

Možnosti příkazu comm

Pomocí comm je jednoduchý, ale přidání možností poskytuje další přizpůsobení.

Níže uvedená tabulka obsahuje všech comm možnosti:

Příkaz Popis
-1 Vytiskne výstup bez prvního sloupce a skryje řádky jedinečné pro první soubor.
-2 Skryje druhý sloupec ve výstupu (řádky jedinečné pro druhý soubor).
-3 Nevytiskne sloupec obsahující běžné řádky.
--check-order Zkontroluje, zda jsou soubory seřazeny.
--nocheck-order Vytiskne výsledek bez kontroly, zda jsou soubory seřazeny.
--output-delimiter=[any character] Nahradí výchozí mezery ve výstupu jiným znakem.
--total Zobrazuje celkový počet řádků v každém sloupci.
-z Zobrazuje výstupní řádky jako ukončené NULL namísto výchozího výstupu ukončeného novým řádkem.
--help Zobrazuje informace nápovědy.
--version Zobrazuje informace o verzi.

Příklady komunikace s Linuxem

comm příkaz pracuje se dvěma seřazenými soubory. Chcete-li pochopit, jak comm funguje, nastavte testovací prostředí:

  1. Vytvořte dva testovací soubory.
  2. Pojmenujte soubory (například File_1 a Soubor_2).
  3. Do každého souboru přidejte jiná slova nebo čísla.
  4. Ujistěte se, že se některý obsah překrývá.

Poznámka: Linux nabízí mnoho způsobů, jak vytvářet soubory z terminálu. Nejjednodušší způsob je použít dotykový příkaz.

Pomocí příkazu cat zobrazte Soubor_1 a Soubor_2 obsah. Výstup ukazuje, že se soubory překrývají ve třech slovech (art , pes a způsob ):

Následující sekce používají File_1 a Soubor_2 vysvětlit, jak comm funguje.

Porovnat dva soubory

Porovnejte dva seřazené soubory řádek po řádku s:

comm File_1 File_2

Příkaz vytiskne výsledky ve třech sloupcích:

  • Sloupec 1 zobrazuje pouze hodnoty jedinečné pro první soubor.
  • Sloupec 2 vytiskne položky přítomné pouze ve druhém souboru.
  • Sloupec 3 zobrazí obsah společný pro oba soubory:art , pes a způsob .

Skrýt sloupce

Použijte argumenty -1 , -2 a -3 a kombinace pro zobrazení pouze určitých sloupců. Například tiskněte pouze řádky společné pro oba soubory pomocí:

comm -12 File_1 File_2

Pomocí -12 s comm skryje první a druhý sloupec a ponechá pouze ten, který obsahuje řádky sdílené oběma soubory.

Na druhou stranu -3 skryje sloupec tři a zobrazí řádky jedinečné pro každý soubor:

comm -3 File_1 File_2

Ignorovat velikost písmen

Srovnání s comm rozlišuje velká a malá písmena. Všechna slova v File_1 a Soubor_2 jsou malá písmena, takže comm uznává umění , pes a způsob jako společné pro oba soubory.

Pokud však například slovo umění je velká písmena v Soubor_1 ale malá písmena v Soubor_2 výstup je:

Rozdíly ve velikosti písmen u slova umění /Umění mezi dvěma soubory výzva comm pro registraci slova jako jedinečného pro každý soubor. Zatímco comm nepřijímá -i jako možnost ignorovat malá a velká písmena poskytuje možnost tr řešení.

Použijte Tr na dvou souborech převést případ a poté přesměrovat výstup na dočasné soubory (Temp_1 , Temp_2 ):

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

Tr převede obsah v obou souborech na malá písmena a vytvoří nové soubory pro uložení výstupu (Temp_1 , Temp_2 ). Původní soubory zůstanou nezměněny.

Spusťte comm na Temp_1 a Temp_2 pro porovnání souborů při "ignorování" velkých písmen:

comm Temp_1 Temp_2

Výstupem příkazu je malá písmena art jako společné slovo pro oba soubory.

Porovnání netříděných souborů

comm Příkaz vytváří hodnotný výstup pouze tehdy, když jsou jako argumenty použity setříděné soubory. Když comm pracuje s netříděnými soubory, výstup není použitelný a vždy vypíše chybovou zprávu.

Například následující dva soubory nejsou seřazeny, jak je znázorněno u cat :

Když používáte comm u netříděných souborů výstup vypíše:

Zatímco comm spáruje určité řádky a vytvoří výstup, výstup je neúplný a nepoužitelný. Chybová zpráva uvádí, že žádný soubor není seřazený.

Chcete-li ověřit, že soubory nejsou seřazeny, použijte comm --check-order :

comm --check-order Not_Sorted_File_1 Not_Sorted_File_2

--check-order volba vytiskne chybovou zprávu a zastaví comm z porovnání souborů u první neseřazené položky.

Chcete-li vynutit comm pro tisk výstupu a skrytí chybové zprávy použijte --nocheck-order :

comm --nocheck-order Not_Sorted_File_1 Not_Sorted_File_2

Výstup není spolehlivý. Například slovo umění je přítomen ve sloupcích jedna a dva, i když je společný pro oba soubory.

Spolehlivý způsob použití comm u netříděných souborů je použít řazení. Proveďte následující:

comm <(sort Not_Sorted_File_1 ) <(sort Not_Sorted_File_2)

Výstup ukazuje, že slova umění , pes a způsob jsou společné pro oba soubory.

Všimněte si, že sort bez argumentů ovlivní pouze standardní výstup a nemění zdrojové soubory. Přesto sort lze použít s jinými comm možnosti.

Chcete-li například vytisknout pouze slova společná pro oba neseřazené soubory, použijte:

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

Chcete-li seřadit zdrojové soubory a poté spustit comm , použijte sort -o . -o argument uloží setříděný výstup do konkrétního souboru.

Například seřaďte Not_Sorted_File_1 a uložte výstup do stejného souboru s:

sort -o Not_Sorted_File_1 Not_Sorted_File_1

Spuštěno cat po seřazení soubor ukazuje, že je nyní seřazen. Opakujte stejný postup pro druhý soubor:

sort -o Not_Sorted_File_2 Not_Sorted_File_2

Spusťte comm pro porovnání souborů:

comm Not_Sorted_File_1 Not_Sorted_File_2

Porovnání adresářů

Použijte comm s ls pro porovnání jmen souborů ve dvou adresářích. Porovnejte například Adresář1 a Adresář2 :

comm <(ls Directory1) <(ls Directory2)

První sloupec představuje názvy souborů jedinečné pro Adresář1 , druhé jedinečné pro ředitele y2 a třetí představuje názvy souborů společné pro obě složky.

Při spuštění comm s ls , příkaz se dívá pouze na názvy souborů, nikoli na obsah. Soubory uvedené jako společné pro obě složky se mohou stále lišit, i když mají stejný název.

Použít comm s STDIN

Chcete-li porovnat soubor se standardním terminálovým vstupem, použijte spojovník jako jeden z argumentů s comm .

Porovnejte například Soubor_1 se standardním vstupem pomocí:

comm File_1 -

Napište text pro porovnání Soubor_1 přímo do terminálu nebo použijte textový editor.

Po stisknutí klávesy Enter , příkaz vytiskne výstup ve třech sloupcích s použitím STDIN namísto Soubor_2.

První sloupec představuje obsah jedinečný pro Soubor_1 , druhý ukazuje slova nalezená pouze ve standardním vstupu a třetí slova společná pro oba.

Změňte výchozí oddělovač

comm výstup standardně odděluje sloupce mezerami. Chcete-li změnit oddělovač, použijte --output-delimiter možnost.

Chcete-li například použít * místo mezer spusťte:

comm --output-delimiter=* File_1 File_2

Výstup ukazuje tato slova v Soubor_1 nemají hvězdičku, ty v Soubor_2 mají jednu hvězdičku a položky společné pro oba soubory mají dvě hvězdičky.

Zobrazit počty řádků

Zobrazte celkový počet řádků v každém sloupci pomocí --total možnost:

comm --total File_1 File_2

Výstup vytiskne počet řádků v dolní části každého sloupce.

Závěr

Po provedení kroků z tohoto tutoriálu víte, jak porovnávat soubory řádek po řádku s comm příkaz.

Dále se naučte jiný způsob porovnávání souborů pomocí příkazu diff.


Linux
  1. Linux Tee Command s příklady

  2. JQ Command v Linuxu s příklady

  3. Příkaz „comm“ v Linuxu s příklady

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. Linuxový příkaz rsync s praktickými příklady

  1. Echo Command v Linuxu (s příklady)

  2. man Command v Linuxu s příklady

  3. Příkaz AWK v Linuxu s příklady