あなたの習慣について教えてください!!

Windows7端末でサクラエディタを用いてGrepしていますが、Grepしたい単語数が多いので困っています。イメージとしては以下のようにできれば良いと考えています。
・検索したい単語のリスト
C:\単語リスト.txt

・結果を出力するファイル
C:\結果テキスト.txt(結果ファイルは単語ごとに出力しても可能)

・検索対象フォルダ(サブフォルダも検索)
C:\SourceCode\

単語リストから一行ずつ取得して検索対象フォルダから該当のファイル名と該当行を結果テキスト.txtに出力します。結果は一つのファイルにまとめて出す場合は、単語ごとにGrepした結果を分けて出力したいです。
もしくは単語単位に複数の結果テキスト.txtを出力しても構いません。

方法ご存知のかた教えて頂ければ幸いです。

A 回答 (4件)

> ちなみに、SourceCodeではなく指定されたフォルダ以下全てを検索したい場合はどうすればよいのでしょうか。



文字通りなら SourceCode を別のディレクトリに読み換えてくれればいい。じゃなく全然検索してくれないなら SourceCode\* と明示的にワイルドカード指定しないといけなかったかもしれない。(いま Windows 環境じゃないから試せない。dir /S とは動作違ったかも)

そのへんの詳しい挙動は msdn あたりで検索するか help findstr or findstr /?
grep なら man grep and/or grep --help etc で確認してくれ
    • good
    • 2

> Windowsでも同じようにできますでしょうか?



cygwin は所謂 Linux のユーザランド互換ですし、まあそれなりに。

> どのコマンドを使ったらよいか分かりません。

cygwin やフリーソフト等のインストールが可能で、その権限もあるならそれをインストールして grep 使うのもありですし、それが不可能な環境なら findstr (正規表現使わないなら find でも) 使うことになるでしょう。

オプションとか自信ないですが findstr の場合書いておくと
for /F "delims=" %i in (単語リスト.txt) do findstr /S /N /R /C:"%i" SourceCode >> 結果テキスト.txt
特殊記号含む検索ワードだと上手く動かないこともある

この回答への補足

ご回答有難うございます。ちなみに、SourceCodeではなく指定されたフォルダ以下全てを検索したい場合はどうすればよいのでしょうか。
>for /F "delims=" %i in (単語リスト.txt) do findstr /S /N /R /C:"%i" SourceCode >> 結果テキスト.txt

補足日時:2014/11/29 01:34
    • good
    • 0

cygwin というか Unix 的には for か while で


while read i; do grep -Rn "$i" SourceCode; done < 単語リスト.txt > 結果テキスト.txt

分ける必要なければ単に
grep -Rn -f 単語リスト.txt SourceCode > 結果テキスト.txt

cygwin 無関係な grep とか findstr で我慢するなら cmd の for 使えということですね

この回答への補足

Windowsでも同じようにできますでしょうか?
どのコマンドを使ったらよいか分かりません。

補足日時:2014/11/27 21:02
    • good
    • 0

「Windows7端末」で動く grep を使って for でループ.

この回答への補足

もう少しに詳しく教えてくれると助かります。

補足日時:2014/11/27 10:04
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!