Vyhledávání na webu

Příklady příkazů Linux sdiff pro nováčky v Linuxu


V jednom z našich dřívějších článků jsme vysvětlili 9 nejlepších nástrojů pro porovnávání a rozdíly souborů (Diff) pro systémy Linux. Uvedli jsme směs nástrojů příkazového řádku a GUI pro porovnávání a hledání rozdílů mezi soubory, z nichž každý má určité pozoruhodné funkce. Další užitečný nástroj pro porovnání pro Linux se nazývá sdiff.

Přečtěte si také: Jak najít rozdíl mezi dvěma adresáři pomocí nástrojů Diff and Meld

sdiff je jednoduchý nástroj příkazového řádku pro zobrazení rozdílů mezi dvěma soubory a interaktivní sloučení. Snadno se používá a přichází s jednoduchými možnostmi použití, jak je vysvětleno níže.

Syntaxe pro použití sdiff je následující.

sdiff option... file1 file2

Zobrazit rozdíl mezi dvěma soubory v Linuxu

1. Nejjednodušší způsob, jak spustit sdiff, je poskytnout dva názvy souborů, které se pokoušíte porovnat. Ukáže sloučený rozdíl vedle sebe, jak je znázorněno na následujícím snímku obrazovky.


cal >cal.txt
df -h >du.txt
sdiff du.txt cal.txt

Zacházet se všemi soubory jako s textovými soubory

2. Chcete-li všechny soubory považovat za text a porovnat je řádek po řádku, ať už se jedná o textové soubory nebo ne, použijte příznak -a.

sdiff -a du.txt cal.txt

Filesystem      Size  Used Avail Use% Mounted on	      |	     April 2018       
udev            3.9G     0  3.9G   0% /dev		      |	Su Mo Tu We Th Fr Sa  
tmpfs           788M  9.7M  779M   2% /run		      |	 1  2  3  4  5  6  7  
/dev/sda10      324G  265G   43G  87% /			      |	 8  9 10 11 12 13 14  
tmpfs           3.9G  274M  3.6G   7% /dev/shm		      |	15 16 17 18 19 20 21  
tmpfs           5.0M  4.0K  5.0M   1% /run/lock		      |	22 23 24 25 26 27 28  
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup	      |	29 30                 
/dev/loop2       82M   82M     0 100% /snap/core/4206	      |	                      
/dev/loop4      181M  181M     0 100% /snap/vlc/190	      <
/dev/loop1       87M   87M     0 100% /snap/core/4407	      <
/dev/loop0      189M  189M     0 100% /snap/vlc/158	      <
/dev/loop3       83M   83M     0 100% /snap/core/4327	      <
cgmfs           100K     0  100K   0% /run/cgmanager/fs	      <
tmpfs           788M   40K  788M   1% /run/user/1000	      <

Ignorujte karty a mezery

3. Pokud máte soubory s příliš velkým množstvím mezer, můžete pomocí přepínače -W říci sdiff, aby při porovnávání ignoroval všechna bílá místa.

sdiff -W du.txt cal.txt

4. Můžete také sdělit sdiff, aby ignoroval jakékoli prázdné místo na konci řádku pomocí volby -z.

sdiff -z du.txt cal.txt

5. Pomocí příznaku -E můžete navíc instruovat sdiff, aby ignoroval změny způsobené rozbalením karty.

sdiff -E du.txt cal.txt

Ignorujte případ při porovnávání rozdílu

6. Chcete-li ignorovat velká a malá písmena (kde sdiff považuje velká a malá písmena za stejná), použijte volbu -i, jak je uvedeno na obrázku.

sdiff -i du.txt cal.txt

Ignorujte prázdné řádky při porovnávání rozdílů

7. Možnost -B pomáhá ignorovat prázdný řádek v souborech.

sdiff -B du.txt cal.txt

Definujte počet sloupců k výstupu

8. sdiff umožňuje nastavit počet sloupců, které se mají vytisknout (výchozí je 130), pomocí -w přepněte následovně.

sdiff -w 150 du.txt cal.txt

Rozbalte Tabulátory na Prostory

9. Chcete-li ve výstupu rozbalit tabulátory na mezery, použijte volbu -t.

sdiff -t du.txt cal.txt

Spustit sdiff interaktivně

10. Příznak -o mu umožňuje spouštět interaktivněji a odesílat výstup do souboru. V tomto příkazu bude výstup odeslán do souboru sdiff.txt, stiskněte Enter po zobrazení znaku %, abyste získali interaktivní nabídku .

sdiff du.txt cal.txt -o sdiff.txt

Filesystem      Size  Used Avail Use% Mounted on	      |	     April 2018       
udev            3.9G     0  3.9G   0% /dev		      |	Su Mo Tu We Th Fr Sa  
tmpfs           788M  9.7M  779M   2% /run		      |	 1  2  3  4  5  6  7  
/dev/sda10      324G  265G   43G  87% /			      |	 8  9 10 11 12 13 14  
tmpfs           3.9G  274M  3.6G   7% /dev/shm		      |	15 16 17 18 19 20 21  
tmpfs           5.0M  4.0K  5.0M   1% /run/lock		      |	22 23 24 25 26 27 28  
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup	      |	29 30                 
/dev/loop2       82M   82M     0 100% /snap/core/4206	      |	                      
/dev/loop4      181M  181M     0 100% /snap/vlc/190	      <
/dev/loop1       87M   87M     0 100% /snap/core/4407	      <
/dev/loop0      189M  189M     0 100% /snap/vlc/158	      <
/dev/loop3       83M   83M     0 100% /snap/core/4327	      <
cgmfs           100K     0  100K   0% /run/cgmanager/fs	      <
tmpfs           788M   40K  788M   1% /run/user/1000	      <
% 
ed:	Edit then use both versions, each decorated with a header.
eb:	Edit then use both versions.
el or e1:	Edit then use the left version.
er or e2:	Edit then use the right version.
e:	Discard both versions then edit a new one.
l or 1:	Use the left version.
r or 2:	Use the right version.
s:	Silently include common lines.
v:	Verbosely include common lines.
q:	Quit.
%

Všimněte si, že v tomto scénáři musíte mít v systému nainstalovány některé z editorů, jako je ed, než je použijete.

Vyvolat jiný program pro porovnání souborů

11. Přepínač --diff-program umožňuje volat jiný nástroj příkazového řádku, jiný než samotný sdiff, například k porovnání souborů , můžete vyvolat program diff, jak je znázorněno.

sdiff --diff-program=diff du.txt cal.txt

Další informace najdete na manuálové stránce sdiff.

man sdiff

V tomto článku jsme se podívali na příklady nástrojů příkazového řádku sdiff pro začátečníky. Pokud máte nějaké dotazy, kontaktujte nás pomocí níže uvedeného formuláře pro komentáře.