diff · + 追加 · − 削除
テキスト比較
「red, green, blue」と「red, yellow, blue」を行単位で比較すると、追加1行、削除1行、変更なし2行になります。2つのテキストを貼り付けると、すべての違いがわかります。
- +1 −1 =2
- @@ -1,3 +1,3 @@
追加された行には+、削除された行には−が付き、色も付きます。置き換えられた行では、変更された文字がハイライトされます。短いテキストは入力に合わせて比較され、テキストがこのタブの外に出ることはありません。
Scanned by NortonTM Safe Web
概要
- 価格
- 料金なし
- アカウント
- 不要
- アップロード
- 対象外 — 2つのテキストはどちらもタブの外に出ません
- 方式
- 行の最長共通部分列、変更された文字をハイライト
- 出力
- 色と記号付きの行、または3行のコンテキスト付きunified diff
- サイズ上限
- 1テキストあたり5,000行、5,000,000文字
比較の実例とオプションの効果
これらの表はツールと同じコードから作られています。最初の表は3行のテキスト2つを比較したもので、2番目の表は1組の行についてオプションが結果をどう変えるかを示します。
| 記号 | 行 |
|---|---|
| = | red |
| − | green |
| + | yellow |
| = | blue |
| 設定 | 追加された行 | 削除された行 |
|---|---|---|
| 完全一致 | 1 | 1 |
| 大文字小文字を無視 | 1 | 1 |
| 空白を無視 | 1 | 1 |
| 大文字小文字と空白を無視 | 0 | 0 |
2つのテキストを比較する手順
2つのテキストを貼り付ける
古いテキストを「元のテキスト」のボックスに、新しいテキストを「変更後のテキスト」のボックスに入れます。短いサンプルが2つ入っています。「入れ替え」で2つのボックスが入れ替わり、「両方をクリア」で両方が空になります。
違いとみなす範囲を選ぶ
「大文字小文字を無視」をオンにすると「Hello」と「hello」が同じ行として扱われ、「空白を無視」をオンにすると行末のスペースと行内の連続したスペースが無視されます。「変更のみ表示」では変更のない行が折りたたまれ、各変更の前後3行が残ります。
差分を見るかコピーする
−が付いた行は元のテキストにだけあり、+が付いた行は変更後のテキストにだけあります。unified diffをコピーしてメッセージやパッチに貼り付けるか、.diffファイルとしてダウンロードできます。
比較の仕組み
2つのテキストを行に分け、行の最長共通部分列、つまり両方のテキストに同じ順序で現れる行の最大の集合を見つけます。その集合に含まれない行は、削除(元のテキストにのみある)または追加(変更後のテキストにのみある)として報告されるため、差分の変更行は最小限になります。削除された行の直後に追加された行が続く場合は、2つの間で異なる文字がハイライトされます。
差分が行単位で動くのは、コード、設定ファイル、リストが行を単位として変更されるからで、行の比較は数千行でも高速です。移動した行は、削除として1回、追加として1回表示されます。変更された単語は、文字がハイライトされた置換行として表示されます。改行コードは正規化されるため、Windowsの改行で保存したファイルとUnixの改行で保存した同じファイルは一致します。各テキストは5,000行、5,000,000文字まで使えます。unified diffの出力は一般的な形式で、---と+++のヘッダーの後に、3行のコンテキストを持つ@@のハンクが続きます。
テキスト比較の質問
テキストの差分は何が変わったかをどう判断しますか?
行の最長共通部分列、つまり両方のテキストが同じ順序で共有する最も多くの行を見つけます。それ以外の行は、元のテキストにだけあれば−、変更後のテキストにだけあれば+が付きます。「red, green, blue」と「red, yellow, blue」では、redとblueが残り、greenが削除され、yellowが追加されます。
単語ではなく行で比較するのはなぜですか?
コード、ログ、リスト、設定ファイルは行で構成されており、行単位の結果は読みやすい短さになります。置き換えられた行では、違う文字がその中でハイライトされるため、長い文の中の1語の変更も見つけやすくなります。
色と+、−の記号は何を意味しますか?
+が付いた緑の行は、変更後のテキストで追加されたものです。−が付いた赤の行は、元のテキストから削除されたものです。記号のない行は両方で同じです。色に加えて記号も表示されるため、赤と緑を見分けられなくても結果を読み取れます。
大文字小文字や空白の違いを無視するには?
「大文字小文字を無視」をオンにすると大文字かどうかを区別せずに行を比較し、「空白を無視」をオンにすると行頭と行末のスペースを無視し、行内の連続するスペースを1つのスペースとして扱います。両方をオンにすると、「Hello World」と「hello world」は同じ行になります。
2つのテキストはどのくらいの大きさまで使えますか?
各テキストは5,000行、5,000,000文字までです。5,000行のテキストを並べ替えたコピーと比較する処理は、現在のコンピューターで1秒もかかりません。合計が100,000文字を超えると、入力に合わせてではなく、「比較」を押したときに比較が始まります。
unified diffとは何ですか?
diffやGitで使われるテキスト形式です。2つのテキストの名前を示す---と+++の行で始まり、その後に変更のまとまりごとのブロックが続きます。ブロックは@@ -1,3 +1,3 @@のようなヘッダーで始まり、元のテキストの1行目から3行、変更後のテキストの1行目から3行を意味します。各行は、スペース、+、−のいずれかで始まります。