web-dev-qa-db-ja.com

差分のみをコピー(kdiff、winmerge、ツールのような任意のdiff)

2つのファイルの違いのみをコピーする可能性はありますか? winmergeと同じですが、このオプションが見つかりませんenter image description here

この画面のように、「黄色の部分」だけをコピーしたい。もちろん私はそれを手動で行うことができますが、大きなファイルではそれほど面白くありません:-)

11
Nicramus

WinMerge には、「パッチのみ」と呼ばれる「差分のみ」のファイルを生成する組み込みの簡単な方法があります。

[ツール]をクリックし、[パッチの生成...]をクリックして、結果を保存する場所を入力します。

enter image description here

(あなたの例では)ファイルを取得します

4,8c4,8
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
---
> 
> 
> 
> 
> 

これは diffを表す標準のコンパクトな方法 を使用し、操作が簡単です。

12
Clément

DiffMergeという無料のアプリがあります。

注:オプション「Show差分のみ」は、次の操作を行うまで無効になります参照ビュー(ロードされたファイル)というラベルの付いた下部のタブに切り替えます。その後、差分のみのビューを使用できるようになります。

Difference with content

Difference only

11
Shiv

WinMergeでの実行方法は次のとおりです。

  1. コンテキスト行を無効にします:[表示]> [コンテキスト]> [0行]。
  2. 対象のペインを選択:ペインをクリックします。
  3. すべてのテキストを選択:[編集]> [すべて選択]または[Ctrl] + [a]。
  4. 選択範囲のコピー:[編集]> [コピー]または[Ctrl] + [c]。
4
lujomu

Winmergeには非常に素晴らしい機能があります。ツールにはRaportをhtmlで生成するには、Tools-> Raportを使用します。その操作の後、生成されたhtmlを解析し、そのようにして差分のみを取得できます(ただし、最も簡単な解決策ではない可能性があります)

2
Nicramus

ほとんどのdiffツールには、クリップボードに向かって機能するパッチ生成機能があります。これは、左右の変更されたテキストのみを取得するために必要なものです(コンテキスト行を削除した場合)。片側のものだけが必要な場合は、最初の文字に関してパッチを簡単にフィルターできます(すべての行を削除し、エディターを使用して、^[+>].*$のようなものと一致させて削除された行を維持するか、^[-<].*$を追加して維持します行)。

コマンドラインのdiffツールは、grepと上記の正規表現の1つをパイプ処理して、それだけを出力します。

1
armel