GNU/Linux >> Znalost Linux >  >> Linux

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

Často je užitečné porovnávat verze textových souborů. Pro systémové administrátory a vývojáře softwaru je to obzvláště důležité. Správce systému může například potřebovat porovnat existující konfigurační soubor s předchozí verzí, aby diagnostikoval systémový problém. Podobně programátor často potřebuje vidět, jaké změny byly v programech provedeny v průběhu času.

The comm zobrazí porovnání dvou seřazených souborů řádek po řádku. V prvním ze tří sloupců, které zobrazuje, jsou uvedeny řádky nalezené pouze v souboru1, ve druhém sloupci jsou uvedeny řádky nalezené pouze v souboru2 a ve třetím jsou uvedeny řádky společné pro oba soubory. Základní syntaxe příkazu „comm“ je:

# comm [options] file1 file2

Hádky

Argumenty file1 a file2 jsou cesty k souborům, které comm porovnává. Použití pomlčky (–) místo souboru1 nebo souboru2 způsobí, že comm bude číst standardní vstup namísto tohoto souboru.

Možnosti

Možnosti můžete kombinovat. Bez možnosti comm vytváří výstup ve třech sloupcích.

Možnosti Funkce
-1 Nezobrazuje sloupec 1 (nezobrazuje řádky nalezené pouze v souboru 1).
-2 Nezobrazuje sloupec 2 (nezobrazuje řádky nalezené pouze v souboru2).
-3 Nezobrazuje sloupec 3 (nezobrazuje řádky nalezené v obou souborech).
-i Porovnávání čar bez rozlišení malých a velkých písmen.
– -check-order Zkontrolujte pořadí vstupu, i když jsou všechny vstupní řádky spárovatelné
– -nocheck-order Ignorujte pořadí vstupu
– -output-delimiter=STR odděluje sloupce oddělovačem „STR“
– -help Zobrazí nabídku nápovědy
– -verze Zobrazit informace o verzi příkazu
Poznámka :Pokud soubory nebyly seřazeny, komunikace nebude fungovat správně. Řádkům ve druhém sloupci předchází jeden TAB a řádkům ve třetím sloupci předcházejí dva TAB. Stav ukončení udává, zda byla komunikace dokončena normálně (0) nebo abnormálně (ne 0).

Příklady použití příkazu „comm“ v Linuxu

Příklad 1:Základní použití

Podívejme se na základní příklad příkazu „comm“ pro porovnání 2 seřazených souborů. Soubory jsou znázorněny níže:

# cat file1
aa
bb
cc
dd
# cat file2
cc
xx
yy
zz

Příkaz comm porovnává soubory řádek po řádku a vydává všechny řádky, které jsou identické. Například:

# comm file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

Tento výstup příkazu se zobrazí ve třech sloupcích:sloupec 1 zobrazuje řádky pouze v souboru1 (aa, bb, dd), sloupec2 zobrazuje každý řádek pouze v souboru2 (xx, yy, zz) a sloupec 3 zobrazuje každý řádek, který je stejný mezi dva soubory (cc). Toto je mnohem podrobnější srovnání než s rozdílem a výstup může být ohromující, když vše, co chcete, je najít nebo zkontrolovat jednu nebo dvě jednoduché změny. Může to však být neuvěřitelně užitečné, když žádný soubor příliš neznáte a chcete vidět, jak se porovnávají.

Příklad 2:Potlačení sloupců

comm podporuje volby ve tvaru -n, kde n je buď 1, 2 nebo 3. Při použití tyto volby určují, které sloupce se mají potlačit. Pokud bychom například chtěli vypsat pouze řádky sdílené oběma soubory, potlačili bychom výstup sloupců 1 a 2:

# comm -12 file1 file2
cc

Podobně můžete pomocí níže uvedených příkazů zobrazit pouze řádky, které jsou přítomny pouze v souboru1 a souboru2.

# comm -23 file1 file2
aa
bb
dd
# comm -13 file1 file2
xx
yy
zz

Příklad 3:Kontrola řazení na vstupu

Příkaz comm poskytuje 2 možnosti kontroly seřazených vstupů:
1. –kontrola objednávky
2. –nocheck-order

–kontrolní objednávka volba zkontroluje, zda je vstup správně seřazen před porovnáním. Pokud není vstup seřazen, zobrazí se chyba, jak je uvedeno níže:

# comm --check-order file1 file2
aa
bb
cc
dd
	xx
comm: file 2 is not in sorted order

Zatímco –nocheck-order volba umožňuje porovnání souborů, i když vstup není v seřazeném formátu. Například:

# cat file1
aa
bb
cc
dd
# cat file2
xx
cc
yy
zz
# comm --nocheck-order file1 file2
aa
bb
		cc
dd
	xx
	yy
	zz

Příklad 4:výstup s oddělovači

comm také poskytuje možnost oddělit výstup pomocí uživatelem zadaného oddělovače. Například místo výchozího výstupu odděleného „tabulátorem“ můžeme použít oddělovač, jako je „|“ (potrubí), jak je znázorněno v příkladu níže:

# comm --output-delimiter="|" file1 file2
aa
bb
||cc
dd
|xx
|yy
|zz

rozdíl comm V/s

comm je podobný rozdíl v tom oba příkazy porovnávají dva soubory. Ale comm lze také použít jako uniq; comm vybere duplicitní nebo jedinečné řádky mezi dvěma seřazenými soubory, zatímco uniq vybere duplicitní nebo jedinečné řádky ve stejném seřazeném souboru.


Linux
  1. Linux Tee Command s příklady

  2. Příkaz linuxové hlavy s příklady

  3. JQ Command v Linuxu s příklady

  1. wc Linux Command s příklady

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

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

  1. man Command v Linuxu s příklady

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

  3. Curl Command v Linuxu s příklady