web-dev-qa-db-ja.com

2つのファイルを比較するためのGUIソフトウェア、違いの「クリーンな」エクスポートを取得しますか?

ファイル間の違いを「クリーン」にエクスポートする方法はありますか?差分ではなく、フォーマットされたレポートでもありません...クリーンな.CSV/.XLS/etcエクスポートです。

これは、技術者以外の人向けです。私たちの会社には、このようなものを実際に使用できる非技術者がたくさんいます。彼らはメーリングリストと連携し、リストのリビジョン間の変更を抽出する方法を必要としています。

プログラマーとして、WinDiff、BeyondCompare、FileMerge、コマンドラインdiffなど、多数のdiffツールがあることを知っています。しかし、違いをきれいにエクスポートするだけのツールを見つけることができませんでした。 (私がリストした有名なdiffツールの1つで何かを見逃した可能性があります)

例...

FileA.csv

1000, Aaron
1001, Bob
1002, Chris
1004, Erin

FileB.csv

1000, Aaron
1001, Bob
1002, Chris
1003, Dolores
1004, Edward

変更された行だけを... "ChangesInFileB.csv"にエクスポートしたい

1003, Dolores
1004, Edward

FWIW、Beyond Compareのサポート担当者は、それを提供していないと言っています。
http://www.scootersoftware.com/vbulletin/showthread.php?p=32298#post32298

この質問は表面的には似ていますが、「クリーンなエクスポート」のことには対応していません https://superuser.com/questions/294142/can-somebody-recommend-a-program-to-compare-differences-in- two-text-files-and-re

3
John Rose

標準のdiffツールをスクリプトで使用できます。

2つのサンプルファイルの場合、プレーンdiffは次のように出力します。

4c4,6
< 1004, Erin
---
> 1003, Dolores
> 1004, Edward

<は「行が削除されました」、>は「行が追加されました」を意味します。 >をフィルタリングするだけで、2番目のファイルにあるが、最初のファイルにはないすべての行を取得できます。

$ diff a.csv b.csv |grep '>'|cut -c 3-
1003, Dolores
1004, Edward

cut部分は先頭の>を除外します)。それをスクリプトに入れることができます。

注:上記は、diffgrep、およびcutがインストールされていることを前提としています。 LinuxとMacOS Xでは標準です(私は信じています)。 Windowsの場合、Cygwinまたは同様のものが必要です。

2
sleske