- ベストアンサー
1行単位で差分を出力するテキスト比較ソフト
1行単位で差分を出力するテキスト比較ソフトを探してます。 2つのファイルで差異を比較するDIFFソフトは多いですが、 比較対象行の上下の順番が違うとうまく差分を検出してくれません。 処理速度は遅くなると思いますが、2つのファイル間で1行ごとに 差分を表示し、保存できるソフトがあれば紹介してください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
・フリーソフトを使わなくても標準で『FC.EXE』がありませんか? ★『FC.EXE』で出来ると思う。 このプログラムで2つのファイルを比較してその結果をリダイレクション出力で コマンドラインから実行するプログラムです。 ファイルに保存すれば良いでしょう。なお、1行単位という事なのでオプションで 『連続する最大不一致行』を1行に指定すれば良いと思います。 ・下にその手順を記述します。 手順: ・『Windows』+『R』キーを押す。→『ファイル名を指定して実行』ダイアログ ・『cmd』と入力して『Enter』キーを押す。→コマンドプロンプトが起動 ・『FC /L /LB1 /N /T ファイル1 ファイル2』と入力して『Enter』キーを押す。 これで相違点が1行単位で画面に表示されます。その結果をファイルに保存 するにはファイルにリダイレクトすれば良い。つまり 『FC /L /LB1 /N /T ファイル1 ファイル2 >diff.txt』と入力して『Enter』キーを押す。 ↑ これで『diff.txt』に相違点が記録されます。 ・あと『/LB1』オプションで上手くいかない場合は『/nnnnn』オプションにして下さい。 つまり 変更前⇒『FC /L /LB1 /N /T ファイル1 ファイル2』 変更後⇒『FC /L /1 /N /T ファイル1 ファイル2』 とします。 その他: ・注意事項としては実行するときのカレント・ディレクトリの位置に気をつけて下さい。 コマンドプロンプトが起動した直後では『C:\Documents and Settings\ユーザ名』の フォルダに位置します。また、比較するファイルにパスを付けて比較します。 ファイルはドラッグ&ドロップでコマンドライン入力に挿入できます。 ・パスについて分からない場合はまたアドバイスしますので補足して下さい。 とにかく特別なソフトは必要ないです。 既にインストールされているはずのコマンドを利用してできます。 ・以上。 『FC.EXE』のヘルプより: 2 つのファイルまたはファイル セットを比較し、相違点を表示します。 FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn] [ドライブ1:][パス1]ファイル名1 [ドライブ2:][パス2]ファイル名2 FC /B [ドライブ1:][パス1]ファイル名1 [ドライブ2:][パス2]ファイル名2 /A 相違する各部分の 1 行目と最後の行だけを表示します。 /B バイナリの比較を実行します。 /C 英字の大文字と小文字を区別しません。 /L ファイルを ASCII テキストとして比較します。 /LBn 連続する最大不一致行を指定行数に設定します。 /N ASCII の比較で行番号を表示します。 /OFF[LINE] オフライン属性が設定されたファイルをスキップしません。 /T タブをスペースに変換しません。 /U Unicode テキスト ファイルとしてファイルを比較します。 /W 連続した空白 (タブとスペース) を 1 つのスペースに圧縮して比較 します。 /nnnn 不一致発見後に確認する、一致すべき連続行数を指定します。 [ドライブ1:][パス1]ファイル名1 比較する最初のファイルまたはファイル セットを指定します。 [ドライブ2:][パス2]ファイル名2 比較する 2 番目のファイルまたはファイル セットを指定します。
その他の回答 (2)
- violet430
- ベストアンサー率36% (27472/75001)
>比較対象行の上下の順番が違うとうまく差分を検出してくれません。 それは先にソートしてから比較すべきだと思います。 一度Excelなどへ読み込んでソートしては如何ですか? OpenOfficeもあります。 http://www.forest.impress.co.jp/lib/offc/document/offcsuite/openoffice.html
- Ceren
- ベストアンサー率49% (90/183)
よくわかりませんが、行自体の順序は問わない、ということですか? 双方のファイルをあらかじめソートしてから diffを取ればいいのではないかと思いますが、 それを自動でやりたいということでしょうか。 であればバッチファイル的なものを用意すればいいのでは。