diff3コマンドで3つのファイルの差分を表示する方法|出力の読み方とマージ手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディレクトリ・ファイル操作 > diff3コマンドで3つのファイルの差分を表示する方法|出力の読み方とマージ手順
「3つのファイルの差分を確認したい」
「diffコマンドは2ファイルまでしか比較できないと思っていた」
diff コマンドは通常2ファイルの比較ですが、diff3 コマンドを使えば3つのファイルを同時に比較できます。
ソースコードのマージ作業やコンフリクトの確認など、複数バージョンのファイルを扱う場面で役立ちます。

この記事では、diff3コマンドの基本的な使い方と出力の読み方を解説します。

【この記事でわかること】
・diff3コマンドで3つのファイルを比較する方法
・出力結果の読み方(====記号の意味)
・-Aオプションと-mオプションでマージする方法
・diffとdiff3の使い分け

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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ファイルすべてで差異がある箇所
====22番目のファイル(file2)だけが他と異なる箇所
====33番目のファイル(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つのファイルが同一かどうか確認する

# 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。