トップ回答者
findstr の/Cオプションと/Gオプションの併用について

質問
-
DOSコマンドのFINDSTRコマンドについての質問です。
2GBあるCSVファイル(AAA.CSV)の必要な行だけ取り出すのにDOSコマンドのFINDSTRコマンドを使いたいと思っています。
スペースを含む複数のキーワードを含む行をOR条件で取り出したいです。
このキーワードが2000行あるため別ファイル(BBB.TXT)にして/Gオプションを使ってみたのですが、
スペースを含むキーワードだとその行のキーワードが複数の条件と判断され、余分な行まで取り出されてしまいます。
以下のようにほしい結果だけをとるオプションの組み合わせかたはありませんでしょうか?
例 FINDSTR /G:BBB.TXT AAA.CSV
AAA.CSV:
2019/8/1,aaaa bbb,ddd,eee
2019/8/1,aaaa,ddd,eee
2019/8/1,bbb,ddd,eee
2019/8/1,bbb,ddd,aaaa bbb
BBB.TXT
aaaa bbb
ほしい結果(「aaaa bbb」が含まれる行だけ取得
2019/8/1,aaaa bbb,ddd,eee
~~~~~
2019/8/1,bbb,ddd,aaaa bbb
~~~~~~
実際の結果(aaaa bbbスペースで別条件と判断されるため全行取得)
2019/8/1,aaaa bbb,ddd,eee
2019/8/1,aaaa,ddd,eee
2019/8/1,bbb,ddd,eee
2019/8/1,bbb,ddd,aaaa bbb
回答
-
こちらWindows 10 Ver 1909(Version 10.0.18363.628)ですが、提示されたaaa.csvとbbb.txtをつくって
>findstr /g:bbb.txt aaa.csv
2019/8/1,aaaa bbb,ddd,eee
2019/8/1,bbb,ddd,aaaa bbb
という結果が得られています。
バージョンによるのかもなので、スペースの前に\をおいてみるとか、
近似解としてスペースの代わりにドット(任意の一文字)を使うとかはどうでしょう。jzkey
- 回答としてマーク siba-inu 2020年2月21日 5:53
すべての返信
-
こちらWindows 10 Ver 1909(Version 10.0.18363.628)ですが、提示されたaaa.csvとbbb.txtをつくって
>findstr /g:bbb.txt aaa.csv
2019/8/1,aaaa bbb,ddd,eee
2019/8/1,bbb,ddd,aaaa bbb
という結果が得られています。
バージョンによるのかもなので、スペースの前に\をおいてみるとか、
近似解としてスペースの代わりにドット(任意の一文字)を使うとかはどうでしょう。jzkey
- 回答としてマーク siba-inu 2020年2月21日 5:53