2つのファイルを左右に並べて比較したい

diffコマンドの標準出力は差分箇所のみを表示する形式で、ファイル全体の対応関係が分かりづらい。-yオプションを付けると、2つのファイルの内容を左右2列に並べて表示できる。

$ cat a.txt
apple
banana
cherry
date

$ cat b.txt
apple
blueberry
cherry
elderberry

$ diff -y a.txt b.txt
apple                                                          apple
banana                                                       | blueberry
cherry                                                         cherry
date                                                         | elderberry

一致する行はそのまま並び、内容が異なる行には|が表示される。b.txtの末尾にdateという行を追加したc.txtと比較すると、以下のように>が表示される。

$ cat c.txt
apple
blueberry
cherry
elderberry
date

$ diff -y a.txt c.txt
apple                                                          apple
banana                                                       | blueberry
cherry                                                         cherry
                                                              > elderberry
date                                                           date

c.txtにのみ存在する行には>a.txtにのみ存在する行には<が表示される。

–suppress-common-lines オプションで一致する行を非表示にする

一致する行数が多いファイルを比較すると出力が長くなり、差分箇所を見つけづらい。--suppress-common-linesオプションを付けると、一致する行を非表示にし、差分がある行のみを表示できる。

$ diff -y --suppress-common-lines a.txt b.txt
banana                                                       | blueberry
date                                                         | elderberry

-W オプションで出力幅を調整する

デフォルトの出力幅は端末の横幅に対して広すぎる場合がある。-Wオプションで出力の最大幅を指定すると、各列の幅がその範囲に収まるよう調整される。

$ diff -y -W 40 a.txt b.txt
apple           apple
banana        | blueberry
cherry          cherry
date          | elderberry

ファイルの行が長い場合は列の幅に収まらず切り詰められるため、-Wオプションの値は比較対象のファイルの内容に応じて調整する。