テキストファイル同士の違っている箇所を発見・比較するコマンド


2012-0915-105705.png

txtファイルで文章や、場合によっては設定のconfigファイルなどを編集した場合に、
その編集したファイルが編集前と編集後でどこが変わっているのか?
ということを確認しないといけない場合があるかと思います。

特にconfigファイルなどでどの部分が修正されたのか?というのは
サーバやNW機器などを触っている上では重要なところです。
一文字間違っただけでシステムがぜんぜん動かなくなったりすることもありますし、
ここは非常に恐ろしいところです。
configファイルの編集後には、「ここだけ修正されています」ということを、
確認をするのが定石といえます。

さて、そのテキスト同士を比較して違っている箇所を発見してくれるコマンドが、
実はWindowsには標準で備わっているので、そちらをご紹介します。

スポンサードリンク

関連記事

今回は、Windowsコマンドプロンプトから、「fcコマンド」を使用します。

コマンドの指定としては下記のとおりです。
fc [比較するファイル1のパス] [比較するファイル2のパス]
今回は、Cドライブの直下にtempというファイルを作って、
そこに001.txt002.txtを保存しました。

001.txtがこれ。
2012-0915-104718.jpg

002.txtがこれです。
2012-0915-104723.jpg

修正箇所がおわかりでしょうか。
001では8行目の最後が「重要なところで、」となっているところを
002では「重要なところです。」と書き換えています。

こうした状態でfcコマンドを実行します。
fc c:\temp\001.txt c:\temp\002.txt

そうすると、下記のように表示されます。
2012-0915-104928.jpg

表示されている3行の真ん中の最後の部分が発見され、表示されるようになります。
オプションで「/n」を付けると、行番号も表示されるようになります。

比較時にどこかを見分けるためには、行番号も一緒に表示をしておいた方がよいかと思われますね。
2012-0915-105119.jpg

ファイルを比較して複数、異なっている場所があった場合は
そのまま複数表示されるようになっています。

今回のような、文章を比較するのは多少ムリがあるかもしれませんが、
configファイルのようなフォーマット(書き方)が決まっているものについては
このコマンドが役立つかと思います。

fcコマンドについてその他オプションの一覧がこちらになります。

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 番目のファイルまたはファイル セットを指定します。

関連:スタートから実行するとすぐ消えてしまうプロンプトのコマンドを消さずにそのまま表示する方法

関連:コマンドプロンプトに表示された内容をそのままコピー(クリップボードに保存)する方法

 

この記事が参考になったら、TipstourのFacebookページに『いいね!』をお願いします!

 

よろしければFeedlyもご登録ください!
follow us in feedly