ファイルの相違点を抽出する
■-- 文法 --■
diff (オプション) ファイル1 ファイル2
例)
diff▲infile.txt▲outfile.txt
「infile.txt」と「outfile.txt」の差分を表示する
※▲はスペースを表してます。
■ オプション
-a テキストファイルじゃなくてもテキストファイルとして比較する
-i 大文字と小文字の違いを無視する
-w 空白を無視して比較する
■ 実行例
-----------------------------------------------------------------
●2つのファイルを比較して、違う点を表示する
「diff list.txt list_cp.txt」
-----------------------------------------------------------------
■ファイルに違いがない場合
$ ls -l ←ファイルを表示します
合計 40
-rw-rw-r-- 1 pakira pakira 19518 3月 14 21:21 list.txt
-rw-rw-r-- 1 pakira pakira 19518 3月 14 21:22 list_cp.txt
$ diff list.txt list_cp.txt ←2つのファイルを比較します。
$ ←違いがなければ、何も表示されません
■ファイルに違いがある場合
$ cat list.txt ←ファイルの内容を表示します
check
point
test
data
$ cat list_cp.txt ←ファイルの内容を表示します
check
point
test
$ diff list.txt list_cp.txt
4d3 ←list.txtの4行目にある違う点が↓に表示されます。
< data
■また、逆のファイルに違う点がある場合には「>」と表示されて結果がでます。
3a4
> data
-----------------------------------------------------------------
■私の場合、このdiffコマンドはシェルスクリプトなどで処理された結果のファイルを検証するときに実行して、そのファイルが正しいことを確認します。
データ量が多い場合に、目で確認するのはとても面倒なので、システム的にチェックできるのでとても便利ですよ♪
-----------------------------------------------------------------
▼比較結果をメッセージとして表示する
■「uniq -s list.txt list_cp.txt」
■ファイルに違いがある場合は、結果が表示されますが同じファイルの場合にはメッセージが表示されません。
そうゆう場合にオプションとして「-s」をつけることによって明示的にメッセージを表示することができます。
-----------------------------------------------------------------
$ diff -s list.txt list_cp.txt
ファイルlist.txtとlist_cp.txtは同一 ←メッセージが表示されます。
-----------------------------------------------------------------
▼空白を無視して比較する
■diffの比較対象には『空白』も含まれます。空白を比較対照に含めたくない場合、オプションに「-w」を指定します。
$ cat list.txt
check
p oint ←pointに空白が含まれる
test
data
$ cat list_cp.txt
check
point
test
data
$ diff list.txt list_cp.txt
2c2
< p oint
--- ←空白部分の違いが表示されます
> point
$ diff -w list.txt list_cp.txt ←「-w」を指定すると空白は比較対象外になります。
$
P.S
diffのもっと高い技術を身につけたいならこちら
<<関連記事>>
・pstree
・chsh
・finger
・du
・uname