Linuxコマンドの紹介です。ここで紹介しているコマンドを
一つでも多くマスターすると、Linuxを使うのがとても楽になります。
これで、あなたもLinuxサーバー管理者への一歩を踏み出せます。




No.024
  ファイルの相違点を抽出する  


■-- 文法 --■

diff (オプション) ファイル1 ファイル2

            例)
                diffinfile.txtoutfile.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」を指定すると空白は比較対象外  $                になります。



ホームへ戻る - コマンドリファレンスへ戻る