新旧二つのファイルを比較して双方の差分だけをテキストに出力したいと思います。(余計な物は混じっていないことが前提です。)
良いツールがあるページはありませんか?
なお、ファイル名だけで比較やサイズだけで比較ができるとなお良いです。
また、Windows限定でお願い致します。
よろしくお願い致します。
DOS窓やCMD、command.com を使いますが・・・ FCコマンドを使って比較できますね。
http://www.microsoft.com/japan/windows/sfu/
Services for UNIX 3.5 ホーム
OS は Windows ですね!
それなら、Windows Services for UNIX か cygwin に含まれている diff コマンドが良いかも知れません。
参考URL: http://www.microsoft.com/japan/windows/sfu/ , http://cygwin.com/
ありがとうございます。
Windows Services for UNIXはうまくインストールできませんでしたが、cygwinのほうはうまくいきました。diffではなく、commのほうが今回の目的には合致するようです。ただ、インストールから実施まで非常に時間がかかるので、もう少し回答をみて_たいと思います。ありがとうございました。
http://hp.vector.co.jp/authors/VA017396/software/Rekisa/
差分表示ソフト Rekisa
「Rekisa」テキストの差分表示アプリケーションです。他のソフトとの連携が容易です。
実はRekisaは使用してみたのですが、テキスト出力ができない(差分だけ出るわけではなく全てでてしまう。)ようです。また、画像出力もファイル数が多すぎるとうまく動かないようでした。引き続きテキスト出力ができるものを募集します。
うちの社内では、上記のコマンドを使っています。
比較1ファイル名:file_a.csv
比較2ファイル名:file_b.csv
出力ファイル名:outfile.csv
ファイル名はカラム1
サイズはカラム2
VERはカラム3
タイムスタンプはカラム4
という条件で、
例1)ファイル比較で一致しないレコードを抽出する。(比較キーはファイル名とサイズ)
csvmat2 file_a.csv file_b.csv outfile.csv [(1)(2)][(1)(2)]
例2)ファイル比較で一致するレコードのみを抽出する。(比較キーはファイル名とサイズ)
csvmat file_a.csv file_b.csv outfile.csv [(1)(2)][(1)(2)]
例3)ファイル比較で一致しないレコードを抽出する。(比較キーはファイル名)
csvmat2 file_a.csv file_b.csv outfile.csv [(1)][(1)]
例4)ファイル比較で一致しないレコードを抽出する。(比較キーはサイズ)
csvmat2 file_a.csv file_b.csv outfile.csv [(2)][(2)]
※()内は比較キーとなるカラム番号
なお、キー項目はあらかじめソートされていること。
※CSVファイルのソートはSORTCSV.exeがあります。
項目1と項目2で昇順ソートする。
SORTCSV INPUT.CSV OUTPUT.CSV (1)(2)
満点のご回答ありがとうございます。今から試験してみようと思います。ところで、goldman様上記のプログラムはどなたの作成したものなのでしょうか。アドレスから見るとVectorで配布されているもののようなのですが。はてな初心者でどうやって聞いたものかわからないので、このまま質問を少しの間だけ続けようと思います。できましたらおしえてください。
http://www.microsoft.com/japan/office/default.mspx
Microsoft Office ホーム
(ツールは思いつかないもので)
私ならexcelでファイルAのデータ表の右にでも表のセル分=vlookup(左方のファイルAのセル,ファイルBの$範囲,1,0)をコピペして(最後は0だったか1だったか)
エラーの出なかった行を削除します。並び替えをしてエラー行を集めて残りをざっくり削除、ですかね。行の順番に意味があれば空いてる列に上から数字振っておいてざっくりやってからその数字の列で並べ替えします。
ファイルAとBを逆にしてやればもう一方も出ます。
どの列のエラーを見るかでファイル名だけの比較やサイズ比較もできるのではないでしょうか。
なるほど、それもかなり早い手法ですね。皆さん色々な技術や発想を持っていてはてなで聞いて本当に良かったと思います。もう少しだけ様子をみさせてください。
我が社で、契約している専属プログラマのかたが開発しています。(いずれも業務用コマンドなので1テラバイト、1兆件まで処理できるそうです)
今回のコマンドは、社内向けに作っていただいた専用のコマンドです。いいのかな公開しちゃって?。でも早いですよ。秒速で1千万件くらい処理しちゃいまから。
(プロテクトがかかっているなどなどのご質問はURLからできます)
ぶっ、むちゃくちゃ凄いですね。この質問はここで終了させていただきます。
FCですと不純物が混ざる(不一致行の前後の行とどのテキストを示しているのかを表す文字列)ので今回の件ですといまいち面倒です。それをきれいに整形する方法があれば別なのですが、まだ質問は続行します。よろしくお願い致します。