Zde na HowtoForge jsme již diskutovali o několika nástrojích příkazového řádku, které se zaměřují na hledání rozdílů v souborech. Ale existuje několik dalších takových nástrojů a v tomto tutoriálu budeme diskutovat o takovém příkazu nazvaném sdiff pomocí několika snadno pochopitelných příkladů.
Vezměte prosím na vědomí, že všechny příklady uvedené v tomto článku byly testovány na Ubuntu 16.04 LTS.
Příkaz sdiff pro Linux
Příkaz sdiff zobrazuje rozdíly v souborech ve formě vedle sebe. Následuje jeho syntaxe:
sdiff [OPTION]... FILE1 FILE2
A zde je návod, jak to popisuje manuálová stránka:
sdiff - side-by-side merge of file differences
Side-by-side merge of differences between FILE1 and FILE2.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout dobrou představu o tom, jak tento nástroj funguje.
O1. Jak funguje příkaz sdiff?
Základní použití je jednoduché, vše, co musíte udělat, je spustit příkaz sdiff s názvy souborů jako argumenty. Například:
sdiff file1 file2
soubor1 a soubor2 byly v mém případě úplně stejné.
A zde je výstupní sdiff vytvořený v tomto případě:
Tento typ výstupu znamená, že v souborech není žádný rozdíl.
O2. Jak nastavit, aby sdiff ignoroval velká a malá písmena?
Předpokládejme, že soubor1 a soubor2 obsahují následující řádky:
Příkaz:
sdiff soubor1 soubor2
vytvoří následující výstup:
Svislá čára (|) v prvním řádku ve druhém sloupci označuje, že dva soubory se liší hned v prvním řádku samotném. Pokud však chcete, můžete donutit sdiff ignorovat velká a malá písmena, což můžete udělat pomocí volby příkazového řádku -i.
sdiff -i soubor1 soubor2
Takže můžete vidět, že výstup nyní ukazuje, že dva soubory jsou identické, což znamená, že rozdíl mezi malými a velkými písmeny byl ignorován.
Q3. Jak přimět sdiff, aby ignoroval mezery?
V případě, že některý ze souborů obsahuje mezery, příkaz sdiff standardně zobrazí rozdíl. Pokud však chcete, můžete toto chování potlačit pomocí volby příkazového řádku -Z:
Pak existuje několik dalších možností souvisejících s prostorem, o kterých byste měli vědět. Zde je seznam:
-E, --ignore-tab-expansion
ignore changes due to tab expansion
-b, --ignore-space-change
ignore changes in the amount of white space
-W, --ignore-all-space
ignore all white space
4. Jak přimět sdiff, aby ignoroval prázdné řádky?
Stejně jako mezery ve výchozím nastavení příkaz sdiff bere v úvahu i prázdné řádky. Například:
Příkaz však můžete nastavit tak, aby ignoroval prázdné řádky pomocí volby příkazového řádku -B.
sdiff -B soubor1 soubor2
Takže můžete vidět, že příkaz sdiff v tomto případě nepovažoval prázdný řádek za rozdíl.
O5. Jak dosáhnout toho, aby sdiff potlačoval běžné čáry?
Předpokládejme, že soubory obsahují nějaké společné řádky a chcete, aby příkaz sdiff potlačil společné řádky, můžete to udělat pomocí volby příkazového řádku -s.
sdiff -s soubor1 soubor2
O6. Jak přimět sdiff, aby používal jiný program pro porovnání?
Ve výchozím nastavení sdiff používá k porovnání diff. Pokud však chcete, můžete dokonce nahradit diff programem podle vašeho výběru. Chcete-li to provést, použijte volbu --diff-program, která vyžaduje jako vstup název programu.
sdiff --diff-program=[PROGRAM] file1 file2
Závěr
Nástroj Sdiff může nabídnout mnoho funkcí, ale jeho křivka učení není tak strmá. Vše, co musíte udělat, je trochu praxe a měli byste jít. Probrali jsme zde většinu možností příkazového řádku. Pro více přejděte na manuálovou stránku sdiff.