ファイル間の違いを「クリーン」にエクスポートする方法はありますか?差分ではなく、フォーマットされたレポートでもありません...クリーンな.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
標準の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
部分は先頭の>
を除外します)。それをスクリプトに入れることができます。
注:上記は、diff
、grep
、およびcut
がインストールされていることを前提としています。 LinuxとMacOS Xでは標準です(私は信じています)。 Windowsの場合、Cygwinまたは同様のものが必要です。