web-dev-qa-db-ja.com

Windows用の優れたgrepツールは何ですか?

Windows用の grep ツールに関する推奨事項はありますか?理想的には64ビットOSを利用できるものです。

私はもちろん Cygwin を知っています、そしてまた PowerGREP を見つけました、しかし隠されたものがあるかどうか疑問に思いますそこに宝石?

290
Portman

コメントの推奨に基づいて、私は grepWin を使い始めました、そしてそれは素晴らしい無料です。


(私はまだ PowerGREP のファンですが、私はもうそれを使用しません。)

私はあなたがすでにそれを述べたことを知っています、しかしPowerGREPはすごいです

私のお気に入りの機能のいくつかは以下のとおりです。

  • フォルダを右クリックしてPowerGREPを実行します。
  • 正規表現またはリテラルテキストを使用する
  • 含めるファイルと除外するファイルのワイルドカードを指定します
  • 検索と置換
  • あなたが意図しているものを置き換えていることを確認できるので、プレビューモードはいいです。

今、私は他のgrepツールが上記のすべてを実行できることに気づきます。それは、PowerGREPがすべての機能を非常に使いやすいGUIにまとめたことだけです。

あなたを連れてきた RegexBuddy と私は彼らのものを愛する以外には関係ない(RegexBuddyには(Windows用の)grepの基本バージョンが含まれており、PowerGREPよりもはるかに低コストです。)


追加ソリューション

既存のWindowsコマンド

WindowsでのLinuxコマンドの実装

グラフィカルインターフェースを備えたGrepツール

追加のGrepツール

188
Mark Biek

FINDSTR はかなり強力で、 正規表現をサポートし 、利点があります。すべてのWindowsマシンに既に存在しています。

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of Word
  xyz\>    Word position: end of Word

使用例:findstr text_to_find *または再帰的に検索する場合findstr /s text_to_find *

315
Ray Hayes

GrepWinフリーでオープンソースの(GPL)

enter image description here私は、tortoisesvnの一人によって書かれたgrepWinを使っています。仕事はWindowsで行いますか...

http://stefanstools.sourceforge.net/grepWin.html

104
Stan Sarama

2013年7月に更新:

私が今Windowsでいつも使っている他のgrepツールは AstroGrep です:

AstroGrep awesomeness

単なる行検索(つまり、コマンドラインgrepの--context = NUM​​)以上のものを私に見せる能力は非常に貴重です。
そしてそれは速いです。非常に高速で、非 - SSD ドライブを搭載した古いコンピュータでも(私は知っていますが、このハードドライブを使用していました。回転ディスク、と呼ばれる プラッタ 、狂ったね?)

これは無料。
それは移植可能です(解凍するための単純なZipアーカイブ)。


オリジナルの回答2008年10月

alt textGnu Grep 大丈夫です

あなたはそれを例えばここからダウンロードすることができます:( site ftp

通常のオプション はすべてここにあります。

それに、 gawkxargs ( 'find'を含む) GnuWin32 )、そしてあなたはUNIX上にいるかのように実際にスクリプトを書くことができます!

再帰的にgrepするために使っている オプションも見てください

grep --include "*.xxx" -nRHI "my Text to grep" *
52
VonC

PowerShellのSelect-Stringコマンドレットはv1.0では問題ありませんでしたが、v2.0では 大幅に改善されました 。 PowerShellを最近のバージョンのWindowsに内蔵していると、最初にインストールしなくても、ここでのスキルは常に役に立ちます。

Select-Stringに追加された新しいパラメーター:Select-Stringコマンドレットは、次のような新しいパラメーターをサポートするようになりました。

  • -Context:マッチラインの前後のラインを見ることができます
  • -AllMatches:行内のすべての一致を確認できます(以前は、行内の最初の一致のみが表示されていました)
  • -NotMatch:grepと同等です。-v o
  • -Encoding:文字エンコーディングを指定します

Get-ChildItem -Recurse .のためのgcir関数を、パラメータを正しく渡すためのsmartsを使って、そしてSelect-Stringのための別名ssを作るのが得策です。だからあなたは書いている:

gcir * .txt | ss foo

30
Jay Bazuzi

それは正確には 'grep'カテゴリに分類されないかもしれませんが、私は AgentRansack と呼ばれるユーティリティなしではWindowsで手に入れることができませんでした。これは、正規表現をサポートする、guiベースの「ファイル内検索」ユーティリティです。フォルダを右クリックして「ransack ..」を押し、探しているものを含むファイルを見つけるのは簡単です。非常に速いです。

23
jasonmray

BaregrepBaretail もいいです)

19
John Sheehan

質問をしてから数年が経ちましたが、AstroGrep( http://astrogrep.sourceforge.net )をお勧めします。

無料で、オープンソースで、そしてシンプルなインターフェースを持っています。私はこれを使って常にコードを検索しています。

17
jj.

PowerShellは数回言及されています。これが実際にどのようにして灰色がかった方法でそれを使用するかです:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

現在のディレクトリツリー内のすべてのテキストファイルで、大文字と小文字を区別してSomeStringを再帰的に検索します。

さらに良いことに、これを実行してください:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

それから:

pgrep SomeStringToSearch *.txt

それから本当にそれを魔法のようにするために、あなたの PowerShellプロファイル に関数エイリアスを追加すれば、適切なコマンドラインツールを持っていないという苦痛をほとんど感じることができなくなります。

16
jslatts

Cygwinにはgrepが含まれています。 Cygwinをインストールすれば、すべてのGNUツールAMD Unix関連のものがWindows上でうまく機能します。

http://www.cygwin.com/

14
Corey Goldberg

ack はWindows上でうまく動作します( Perl をお持ちの場合)。私は多くの用途でgrepよりも優れていると思います。

13
cjm

Windowsのgit = cmd.exeのgrep

Git をインストールすると、基本的なLinuxコマンドがいくつか提供されることがわかりました。cat、grep、scp、その他すべての優れたコマンドです。

インストールしてGitのbinフォルダをPATHに追加すると、cmd.exeは基本的なLinux機能を持ちます。

http://code.google.com/p/msysgit/downloads/list?can=3

13

dnGREP はWindows用のオープンソースのgrepツールです。それは含むクールな機能の数をサポートしています:

  • 置き換えのために元に戻す
  • エクスプローラでフォルダを右クリックして検索する機能
  • 音声検索やxpathなどの高度な検索オプション
  • PDFファイル、アーカイブ、およびWord文書内を検索

私見、それも素敵できれいなインターフェースを持っています:)

10
stankovski

私はいつも WinGREP を使っていますが、ファイルを手放さないという問題がありました。

7
Tom Kidd

私はかなり長い間 Win32用のGNUユーティリティ をうまく使ってきました。私はパッケージ化されたシェルを避け、win32コマンドプロンプトで実行可能ファイルを使うだけです。

パッケージ化されているテールもかなり良い小さなアプリケーションです。

7
user17314

さて、GNU grepのWindowsポートのそばに:

http://gnuwin32.sourceforge.net/

ボーランドのgrep(GNU oneと非常によく似ています)もフリーウェアのBorlandのFree C++ Compiler(コマンドラインツール付きのフリーウェア)で入手できます。

7
Milan Babuškov

私は Aba Search and Replaceの作者です。 PowerGREPと同じように、正規表現をサポートしています。 HTML/CSS/JS/PHPのシンタックスハイライト、UTF-8とUTF-16を含む異なるエンコーディング。

PowerGREPと比較して、GUIは整理されていません。パターンを入力しているとすぐに検索が開始されます(インクリメンタル検索)、そのため、正規表現を試してすぐに結果を確認できます。

あなたは私のツールを試すことを歓迎されています。私はどんな質問にでも答えたいです。

6
Peter Kankowski

私はあなたがフォルダを右クリックして、あらゆるファイルの正規表現検索をすることができるWindows用の無料grepツールを望んでいました - どんなナグスクリーンもなしで。

以下は、前の投稿で言及したfindstrに基づく簡単な解決策です。

あなたのハードドライブのどこか長命なツールを保管するテキストファイルを作成してください。 .batまたは.cmdに名前を変更して、それに以下を貼り付けます。

@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"

次にSendToフォルダを参照してください。 Windows 7では、%APPDATA%\Microsoft\Windows\SendToを参照してバッチファイルのショートカットをそのSendToフォルダにドラッグします。

ショートカットをSendToリストの一番上に表示されるように1 GREPに変更しました。

次にこれを行いたいのは、findstrの出力をhtmlファイルを生成するものにパイプ処理して、各出力行をクリックしてそのファイルを開くことができるようにすることです。また、フォルダへのショートカットではうまくいかないと思います。パラメータを調べて、「。lnk」が含まれているかどうかを確認する必要があります。

4
Philip Beck

私が選んだツールは、適切に名前が付けられた Windows Grep です。

  • シンプルなGUI
  • 検索と置換をサポート
  • 見つかった行の周囲の行を表示できます
  • cSVおよび固定幅ファイルの列内を検索できます
3
John N

UnxUtils は私が使っているものです、私にとっては完璧に動作します...

3
Johan

私は何年もの間Borlandのgrepを使っていましたが、それがマッチしないパターンを見つけました。ねえ。他に何がそれを長年にわたって発見しなかったか? grepのような再帰を行う単純なテキスト検索置換を書きました - それはソース偽造のFS.EXEです。

grepは失敗します...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

windows findstrは動作します...

C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG:    AADD(mPRINTER,   TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG:               IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG:                   REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
3
Jerry Lusa

あなたが簡単にWindows Grepツールを使いたいならば、私は私が私のウェブサイトから無料でダウンロードできるようにしたP-Grepと呼ばれるものを作成しました:www.adjutantit.com - ホームメニュー、ダウンロード。

Windows Grepは多数のファイルに問題があるように思われたので、私は自分で書いた - それはより信頼性があるように思われる。フォルダを選択して右クリックし、それをP-Grepに送信することができます。 sendtoフォルダはインストール中に更新されません。

2
John Pember

他の良い選択は MSYS です。それはあなたがあなたがより生産的になることを可能にするためにあなたに他のGNUユーティリティの束を与えます。

2
DDay

Windows用GREP

私は永遠にそれを使ってきました、そして幸運にもそれはまだ利用可能です。超高速でとても小さいです。

1
bbrown

PowerShellのselect-stringは似ていますが、同じオプションやセマンティクスではありませんが、それでも強力です。

1
Jim Deville

私は何年も毎日 AJC Grep を使っています。私が発見した唯一の大きな制限は、ファイルパスは255文字に制限されており、警告を発するのではなく、それが見つかると停止することです。迷惑ですが、あまり起こりません。

私は64ビットのWindows 7 Ultimateでそれを使っているので、その64ビットの資格情報は問題ありません。

1
CrispinH

私は Cygwin を私のマシンにインストールし、Cygwinのbinディレクトリを私の環境パスに入れるので、Cygwinのgrepはすべてを解決するコマンドラインで通常通り動作します。私のスクリプトは現時点でgrepを必要としています。

0
Satyrn

もしあなたが探しているものが全く解決策でなければ、おそらくあなたはFindStrへのラッパーを書くことができるでしょう。

とにかくFindStrはなかなかいいので、GUIをノックアップし(必要に応じて)、いくつかの追加機能(指定した文字列を含むファイルの数を見つけるためにFindと組み合わせるなど)を追加するだけです。

これは、もちろん、あなたがこれを行うための要件、時間、そして意志を持っていることを前提としています!

0
Stefan