ウェブサイト検索

Linux 初心者向けの Linux sdiff コマンド例


以前の記事の 1 つで、Linux システムに最適な 9 つのファイル比較および差分 (Diff) ツールについて説明しました。ファイル間の相違点を比較および検出するためのコマンド ライン ツールと GUI ツールを組み合わせてリストしました。それぞれに特定の顕著な機能があります。 Linux 用のもう 1 つの便利な diff ユーティリティは、sdiff と呼ばれます。

こちらもお読みください: Diff ツールと Meld ツールを使用して 2 つのディレクトリ間の違いを見つける方法

sdiff は、2 つのファイル間の違いを表示し、対話的にマージするためのシンプルなコマンド ライン ユーティリティです。使い方は簡単で、以下で説明するような簡単な使用オプションが付属しています。

sdiff を使用するための構文は次のとおりです。

sdiff option... file1 file2

Linux で 2 つのファイルの違いを表示する

1. sdiff を実行する最も簡単な方法は、比較する 2 つのファイル名を指定することです。次のスクリーンショットに示すように、マージされた差分が並べて表示されます。


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

すべてのファイルをテキスト ファイルとして扱う

2. テキスト ファイルであるかどうかに関係なく、すべてのファイルをテキストとして扱い、行ごとに比較するには、-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	      <

タブと空白を無視する

3. 空白が多すぎるファイルがある場合は、-W スイッチを使用して、比較中にすべての空白を無視するように sdiff に指示できます。

sdiff -W du.txt cal.txt

4. -z オプションを使用して、行末の空白を無視するように sdiff に指示することもできます。

sdiff -z du.txt cal.txt

5. さらに、-E フラグを使用して、タブ展開による変更を無視するように sdiff に指示できます。

sdiff -E du.txt cal.txt

違いを比較する際に大文字と小文字を無視する

6. 大文字と小文字を無視するには (sdiff は大文字と小文字を同じとして扱います)、次のように -i オプションを使用します。

sdiff -i du.txt cal.txt

違いを比較する際に空白行を無視する

7. -B オプションは、ファイル内の空白行を無視するのに役立ちます。

sdiff -B du.txt cal.txt

出力する列数を定義する

8. sdiff では、-w< を使用して、印刷する列数 (デフォルトは 130) を設定できます。 は次のように切り替えます。

sdiff -w 150 du.txt cal.txt

タブをスペースに展開する

9. 出力内でタブをスペースに展開するには、-t オプションを使用します。

sdiff -t du.txt cal.txt

sdiff を対話的に実行する

10. -o フラグを使用すると、より対話的に実行し、出力をファイルに送信できるようになります。このコマンドでは、出力は sdiff.txt ファイルに送信されます。% 記号が表示された後で Enter を押すと、対話型メニューが表示されます。 。

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.
%

このシナリオでは、ed などのいくつかのエディタを使用する前にシステムにインストールする必要があることに注意してください。

別のプログラムを呼び出してファイルを比較する

11. --diff-program スイッチを使用すると、sdiff 自体以外の別のコマンドライン ツールを呼び出してファイルを比較できます。に示すように、diff プログラムを呼び出すことができます。

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

詳細については、sdiff のマニュアル ページを参照してください。

man sdiff

この記事では、 初心者向けのsdiff コマンドライン ツールの例を検討しました。ご質問がある場合は、以下のコメント フォームを使用してご連絡ください。