• ベストアンサー

テキストファイルの引き算

コマンドプロンプトから2つのファイルを引数指定して片方のみに存在する行を出力する方法を探しております。 (例) A.TXT ---- 111 222 333 444 555 B.TXT ---- 333 111 222 A.TXTからB.TXTを引き算した結果として、以下が出力したく考えています。 --- 444 555 OSはWindowsXPで、バッチファイルやVBスクリプトなど、コマンドラインから実行できる方法を探しています。(出回っているツールで、コマンドラインから実行できるものも可) ご存知の方がいらっしゃいましたら、ご教授ください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

差分というのは、fc a.txt b.txt で出力されるような物で、この質問だと引き算でいいかと。 findstr /v /g:b.txt a.txt と、一発です。詳しくは、findstr /? で説明が出ます。

t29x0479
質問者

お礼

件数が少ないと正しく結果が出ますが、1万件程度で実施したところ、正しく引き算されませんでした。上限があるのでしょうか?

その他の回答 (3)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

UNIX系のOSであれば、 cat A.TXT B.TXT | sort | uniq -u で実現できます。ただし、A.TXTの中には重複した行がないこと、B.TXTに含まれている行は全てA.TXTに含まれていることが前提として必要です。 同じことをWindows XPでやるにはCygwinをインストールするなどの方法がありますが、これだけのためにCygwinをインストールするのは大袈裟という気もします。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

こういうやつを使用する。 http://www.vector.co.jp/soft/winnt/util/se424177.html ※「引き算」とは言わずに「差分」と言います。

回答No.1

Unix系OSならfgrepで一発なのですが... % fgrep -v -f b.txt a.txt

関連するQ&A