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 コマンドライン ツールの例を検討しました。ご質問がある場合は、以下のコメント フォームを使用してご連絡ください。