• ベストアンサー

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

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答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

  • コマンドプロンプトでテキストの引き算をする方法

    コマンドプロンプトで2つのテキストファイルの引き算をする方法があれば、ご教授いただきたいです。 A.TXT --- 11111 22222 33333 44444 B.TXT --- 33333 11111 55555 A.TXTからB.TXTを引き算して、 --- 11111 44444 を出力したいです。 エクセル上でなんとかならなくもないのですが、1万件単位で何度もチェックをする予定のため、コマンドプロンプトからコマンド一発でできる方法はないかと思い、質問させていただきました。 よろしくお願い致します。

  • BATファイルによるfcコマンドでのファイル比較のエラー

    BATファイルによる、fcコマンドでのファイル比較を行いたいのですが、直接コマンドプロンプトで実行した場合では、正常に結果が指定ファイルに出力されるのに対して、BATファイルで同様のコマンドを実行しても, fcコマンドの比較結果が正常に出力されません。 原因を分かる方がいらっしゃいましたら、教えて頂けますでしょうか? 実行するfcコマンド内容 fc c:\a.txt c:\b.txt > c:\c.txt

  • DLLの登録をVBで行いたい(VB2005)

    いつもお世話になっております。 VB2005で開発しています。 DLLを登録するときに、コマンドプロンプトから regsrv32 ファイル名.dll と実行すると思います。 これをVBから行いたいのですが、何か良い方法はございませんか? 具体的には、VBでレジストリ登録するファイルの一覧を出力して、 それをレジストリ登録したいのです。 VBとバッチを組み合わせれば、実現可能なのですが、 ファイルを2つに分けたくないので、VBだけで処理できないものかと 思いました。 コマンドプロンプトで実行するコマンドをVBから同じように実行できれば良いのですが・・・ もしよろしければ、ご教示ください。 よろしくお願い致します。

  • バッチファイルで実行できたりできなかったり

    こんにちは。 バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。 まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。 ping [example.com] > result.txt tracert [example.com] >> tr_result.txt ipconfig /all > ipc_result.txt 次に、各コマンドをテキストファイルに書き込んで、それぞれ "p_test.bat" # 内容は ping コマンド "tr_test.bat" # 内容は tracert コマンド "ipc_test.bat" # 内容は ipconfig コマンド と命名しデスクトップに配置、ダブルクリックで実行してみました。 すると、このうち正常に実行(結果をテキストファイルに出力)されたのは tr_test.bat のみでした。 ここで質問なのですが、なぜこのような違い(バッチファイルにすると実行できるものとできないものに分かれる)が起こるのでしょうか? バッチファイルの作り方やとコマンドプロンプトについて調べてみましたが、説明を見つけることが出来ませんでした。 この辺の理論について詳しい方がおりましたら、ご教示頂きたく思います。 ちなみに、OS は Windows XP SP2 です。 よろしくお願いいたします。

  • テキストファイルの分割 

    下記(1)のようなテキストファイルを下記(2)のような状態に分割したいです。 バッチ?コマンドプロンプト?等で対応できそうな気はしているのですが、 方法が全く思いつきません。 上記手法に問題があれば、他の手法(VBA、エクセル等)でも問題ありません。 良い案を教えて頂けないでしょうか。 宜しくお願い致します。 (1)元のテキストファイル(タブ区切り) 氏名 教科 点数 Aさん 数学 80点 Bさん 数学 90点 Cさん 国語 90点 Dさん 数学 80点 (2)"教科"の値毎に分割して出力 数学.txt  Aさん 数学 80点  Bさん 数学 90点  Dさん 数学 80点 国語.txt  Cさん 国語 90点

  • コマンドプロンプトでのファイル操作について

    コマンドプロンプトでのファイル操作について、ご存知のかたどうか教えてください。 a.txt b.txtという2つのファイルがあるとします。 <a.txtの内容> 1111 2222 3333 <b.txtの内容> aaaa bbbb cccc 上記の2つのファイルを読み取りc.txtというファイルへ以下のように 出力したいのですが、コマンドプロンプト(batでも問題ありません) にてできるのでしょうか? <c.txtの内容> 1111,aaaa 2222,bbbb 3333,cccc ご教授のほど、宜しくお願いします。

  • for文の制御変数の展開(バッチスクリプト)

    こんにちは。 コマンドプロンプトのバッチスクリプトにおいて、 例えば、コマンドライン引数を、a b c d e f g h i としてスクリプトを実行したときに、 No1:a No2:b No3:c No4:d No5:e No6:f No7:g No8:h No9:i のように出力させることを考えています。 この場合、バッチスクリプト内で for /L %%a in (1,1,9) do echo No%%a:%%%a のように記述すればいいかなと思ったのですが、出力は以下のようになりました。 No1:1 No2:2 No3:3 No4:4 No5:5 No6:6 No7:7 No8:8 No9:9 また、最後のaにつく%を4つに増やしたところ、出力は以下のようになりました。 No1:%1 No2:%2 No3:%3 No4:%4 No5:%5 No6:%6 No7:%7 No8:%8 No9:%9 となりました。 何か良い方法が思いついた人がいらっしゃれば、アドバイスをお願いしたいと思います。 では、よろしくお願い致します。

  • バッチファイルを起動したけど、win98では引数が長すぎて。。。

    VBからバッチファイルを起動する処理を作成中です。 SHELL コマンドで実行しているのですが、 そのバッチファイルの引数がすごく長いのです。 >batch.bat "引数1" "引数2" "引数3" とする際、引数1 ~ 引数3までの合計文字列が 128?byte を超えてしまい、 win98では、使えないプログラムがあります。 複数の引数をまとめたファイルを、バッチファイルの 引数として起動させる等、 回避作はあるのでしょうか? 教えてください。

  • コマンドプロンプトで簡単なファイルの読み込み

    ファイルAの場所 C:\file.txt ファイルBの場所 D:\file.txt それぞれのファイルには一行の文字が書かれています。 バッチファイルを使って、この二つのファイルを読み込み、内容が同じであれば、"same"をecho、そうでなければファイルAをファイルBに上書きするというバッチを作りたいのですが、コマンドプロンプトは使ったことがないので、よくわかりません。 調べてみましたが、for /fを使うのでしょうか?それぞれのファイルは一行しか文字を含まないので、もっと簡単にできそうな気もするんですけどどうなんでしょう。

  • dosでのファイルリスト取得について

    初歩的な質問ですいません。 以下のバッチファイルを作成しようと思っています。 ・特定のフォルダ配下にあるcsvファイルをバッチファイルの引数に設定したいと思っています。 例) フォルダに A.csv B.csv C.txt があるとすると バッチファイル A.csv バッチファイル B.csv を実行する。 いまいち、ファイルリストを取得してるループ処理させる方法がわかりません。

専門家に質問してみよう