• 締切済み

連続で複数の単語をGREPしたい

Windows7端末でサクラエディタを用いてGrepしていますが、Grepしたい単語数が多いので困っています。イメージとしては以下のようにできれば良いと考えています。 ・検索したい単語のリスト C:\単語リスト.txt ・結果を出力するファイル C:\結果テキスト.txt(結果ファイルは単語ごとに出力しても可能) ・検索対象フォルダ(サブフォルダも検索) C:\SourceCode\ 単語リストから一行ずつ取得して検索対象フォルダから該当のファイル名と該当行を結果テキスト.txtに出力します。結果は一つのファイルにまとめて出す場合は、単語ごとにGrepした結果を分けて出力したいです。 もしくは単語単位に複数の結果テキスト.txtを出力しても構いません。 方法ご存知のかた教えて頂ければ幸いです。

みんなの回答

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.4

> ちなみに、SourceCodeではなく指定されたフォルダ以下全てを検索したい場合はどうすればよいのでしょうか。 文字通りなら SourceCode を別のディレクトリに読み換えてくれればいい。じゃなく全然検索してくれないなら SourceCode\* と明示的にワイルドカード指定しないといけなかったかもしれない。(いま Windows 環境じゃないから試せない。dir /S とは動作違ったかも) そのへんの詳しい挙動は msdn あたりで検索するか help findstr or findstr /? grep なら man grep and/or grep --help etc で確認してくれ

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.3

> Windowsでも同じようにできますでしょうか? cygwin は所謂 Linux のユーザランド互換ですし、まあそれなりに。 > どのコマンドを使ったらよいか分かりません。 cygwin やフリーソフト等のインストールが可能で、その権限もあるならそれをインストールして grep 使うのもありですし、それが不可能な環境なら findstr (正規表現使わないなら find でも) 使うことになるでしょう。 オプションとか自信ないですが findstr の場合書いておくと for /F "delims=" %i in (単語リスト.txt) do findstr /S /N /R /C:"%i" SourceCode >> 結果テキスト.txt 特殊記号含む検索ワードだと上手く動かないこともある

qtarou1982
質問者

補足

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

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

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 使えということですね

qtarou1982
質問者

補足

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

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

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

qtarou1982
質問者

補足

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

関連するQ&A

  • サクラエディタのGrep機能について

    サクラエディタについての質問です。 テキストファイルAから単語BでGrepした結果テキストファイルCから 更に単語DでGrepする方法をご存知ではありませんでしょうか? 一旦保存せずに、続けてGrepしたいと思ってます。 秀丸では、できるのですが・・・ 宜しくお願いします。

  • vimのgrepの使い方がよくわかりません

    WindowsXPでvimを使い始めたのですが、 grepのやり方がよくわかりません。 一応、unixでgrepやviは最低限レベルでは使えます。 やりたいこととしては、 指定のテキストから、特定の文字列を検索して、 結果を一覧で表示させて、 その中からどれか選んで、その行へジャンプして表示する ということがやりたいです。 で、たぶんgrepでやれるんじゃないかと思って質問しています。 grepに関する簡単な解説を読むと、 (esc)したあと、 :grep hoge hoge.txt でできる、というようなことが書いてあるのですが、 上記で実行すると、 :!findstr /n hoge hoge.txt > c:xxxxxxxx 2>&1 (1 of 1): 1:hoge と出ますが、ここから何をしていいかわかりません。 grepの機能としてはここで終わりなのでしょうか? ここから結果の行へジャンプしたりできないのでしょうか? また、grep対象のファイルって毎回自分で入力するのでしょうか? たとえば、現在編集しているファイルを対象としたい場合、 現在のファイル名となる変数みたいものはあるのでしょうか?

  • grepを使用して、対象テキスト内容を以下に結果のように出力したいので

    grepを使用して、対象テキスト内容を以下に結果のように出力したいのですが、 正規表現でどのようにすればよいかわかりません。 また、複数行に対してgrepして一行に出力することは可能でしょうか。 <対象テキスト内容> 1 111 333 2 444 555 <結果> 111 444

  • 秀丸のGREP検索

    GREP検索をした時、該当する単語のある行が表示されなくなってしまいました。 viyon.txt(17) suisen.txt(114) のようにファイル名と行番号しか表示されません。 以前は、検索単語と周囲の文字列も表示されてたんですけど・・・・・・ 元に戻せませんか?

  • グレップツールを探しています

    グレップツールを探しています。 用途として、 HTMLファイルに書かれた 単語の置換を、フォルダごと行いたいのです。 検索結果から一括置換するツールは あったのですが、検索結果から選択して、 「このファイルのこの単語とこの単語のみ、置換」ということを したいのですが、そのようなソフトが見つかりません。(検索された単語が含まれるもの全てを 置換してしまいます) vectorで見つけた「FileGrep」を 使ってみたのですが、これも検索結果を 全て一括置換してしまうというものでした。 WindowsXpで使えるものを探しています。 また、できればMacOSXで使えるものも 教えていただけると助かります。 もしご存知の方がいらっしゃいましたら よろしくお願いします。

  • FreeBSDでWindowsの秀丸エディタみたいなgrepする方法?

    FreeBSDでWindowsの秀丸エディタみたいなgrepする方法があったら教えて下さい。 たとえば、秀丸ではこんな風にgrepしてます。 検索する文字列:hoge 検索するファイル:*.c *.h 「大文字/小文字の区別」にチェック 「単語の検索」にチェック 「サブフォルダも検索」にチェック どなたか分かる方、よろしくお願いします。

  • あるディレクトリ下の複数のファイルに、複数(2つ)の単語を検索する。

    あるディレクトリ下の複数のファイルに、複数(2つ)の単語を検索する。 ファイル内に検索した単語が全て含まれていたら、そのファイル名を出力する。 上記をどのようにしたらできますか? GREPを使って行いたいのですが。

  • grep検索のできるモバイル端末を探しています。複数のテキストファイル

    grep検索のできるモバイル端末を探しています。複数のテキストファイルについて、グレップ検索ができるテキストエディタなどが搭載されている(または搭載可能な)PDAはないでしょうか。ザウルスなどの旧機種ではなく、現在生産中の機種でお願いします。

  • grepでファイル名を取得したい。

    いま以下の構成になっています。 カレントディレクトリの(ディレクトリを除く)ファイル名を取得し,list.txtに出力する作業をやってます。 そういうオプションがあれば良いのですがなかなか見つかりません。知恵をお貸しください。 list -F |& grep (???) > list.txt -Fでディレクトリの最後に/がつくので,(???)の部分でそれらのファイルを除く,とする方針…?と思ったのですが,うまいやり方が見つかりません。 よろしくお願いします。

  • 秀丸での完全一致Grep

    テキストエディタの秀丸について質問させてください。 たとえば ・001 hidemaru 秀丸完全一致検索 ・002 hidemaru 秀丸完全一致 ・003 hidemaru 秀完全一致 テキストエディタに上のような記述があり、「秀丸完全一致」にて Grepを行うと、001行目と、002行目が検索結果として返されますが、 このとき、002行目だけを検索結果として返すことは出来ませんでしょうか。 お力添えを宜しくお願いいたします。