「diffコマンドは2ファイルまでしか比較できないと思っていた」
diff コマンドは通常2ファイルの比較ですが、diff3 コマンドを使えば3つのファイルを同時に比較できます。ソースコードのマージ作業やコンフリクトの確認など、複数バージョンのファイルを扱う場面で役立ちます。
この記事では、diff3コマンドの基本的な使い方と出力の読み方を解説します。
・diff3コマンドで3つのファイルを比較する方法
・出力結果の読み方(====記号の意味)
・-Aオプションと-mオプションでマージする方法
・diffとdiff3の使い分け
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
diff3コマンドとは
diff3 は3つのファイルの差分を比較するコマンドです。引数の順番は
diff3 自分のファイル 共通の元ファイル 相手のファイル という形式で指定するのが基本ですが、単純に3ファイルの差分を確認する場合は順番を気にせず使えます。
基本的な使い方
1. 3つのファイルの差分を確認する
# 比較ファイルの内容確認 $ cat file1.txt Japan Afghanistan Algeria Andorra Angola Antigua and Barbuda Argentina $ cat file2.txt Japan1 Afghanistan Algeria Bahrain Angola Antigua and Barbuda Argentina $ cat file3.txt Japan3 Afghanistan Algeria Andorra Angola Antigua and Barbuda Cambodia # 3ファイルを比較 $ diff3 file1.txt file2.txt file3.txt ==== 1:1c Japan 2:1c Japan1 3:1c Japan3 ====2 1:4c 3:4c Andorra 2:4c Bahrain ====3 1:7c 2:7c Argentina 3:7c Cambodia
出力結果の読み方
diff3の出力には==== 記号が使われます。・
====(数字なし):3ファイルすべてで差異がある箇所・
====2:2番目のファイル(file2)だけが他と異なる箇所・
====3:3番目のファイル(file3)だけが他と異なる箇所各ブロックの中は、
1:1c の形式でファイル番号と行番号が表示されます。応用・実務Tips
1. -eオプションでed形式の差分を出力する
# file1とfile2だけの差分をed形式で出力 $ diff3 -e file1.txt file2.txt file3.txt
2. -mオプションでマージした結果を出力する
-m オプションを使うと、3つのファイルをマージした結果を出力します。# 3ファイルをマージした結果を出力 $ diff3 -m file1.txt file2.txt file3.txt
<<<<<<< / ======= / >>>>>>> の形式でマーカーが挿入されます。3. 3つのファイルが同一かどうか確認する
# 3ファイルが全て同一なら何も出力されない $ diff3 file1.txt file1_copy.txt file1_copy2.txt $ echo "終了コード: $?" 終了コード: 0
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 3ファイルの差分を確認 | diff3 ファイル1 ファイル2 ファイル3 |
| マージ結果を出力 | diff3 -m ファイル1 ファイル2 ファイル3 |
| 2ファイルの差分(通常) | diff ファイル1 ファイル2 |
| 差分があるかだけ確認 | diff3 f1 f2 f3 ; echo $? |
Linuxのファイル比較・管理コマンドを体系的に学びませんか?
diff3のような比較ツールは、設定ファイルの変更管理や複数バージョンのコードマージに役立ちます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:ファイル内の特定文字から始まる文字列を抽出する方法|grep ^の正規表現と実務活用例
- 前のページへ:cmpコマンドで2つのファイルを比較する方法|バイト単位の差分確認とスクリプト活用
- この記事の属するカテゴリ:Linuxtips・ディレクトリ・ファイル操作へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます