tags:

views:

10529

answers:

15

Any recommendations on grep tools for Windows? Ideally ones that could leverage 64-bit OS.

I'm aware of cygwin, of course, and have also found PowerGREP, but I'm wondering if there are any hidden gems out there.

+1  A: 

PowerShell's select-string is similar, it's not the same options and semantics, but it's still powerful.

James Deville
+3  A: 

I always use WinGREP, but I've had issues with it not letting go of files.

Schnapple
I've used wingrep for several years, it's great with the exception that the directory select boxes are far too small
Cruachan
+5  A: 
VonC
I just started looking for a replacement for Gnu Grep as the windows version doesn't seem to be able to handle my 10 Mb text files. It just sits there and pretends not to have found anything. If I cut down the file size it starts to work.
Peter M
+5  A: 

I know you already mentioned it but PowerGREP is awesome.

Some of my favorite features are:

  • Right-click on a folder to run PowerGREP on it
  • Use Regular Expressions or literal text
  • Specify wildcards for files to include & exclude
  • Search & replace
    • Preview mode is nice because you can make sure you're replacing what you intend to.

Now I realize that the other grep tools can do all of the above. It's just that PowerGREP packages all of the functionality into a very easy-to-use gui.

From the same wonderful folks who brought you RegexBuddy and who I have no affiliation with beyond loving their stuff.

Mark Biek
Yeah, after evaluating the alternatives, I think I'm sticking with PowerGREP. Will try to post a full analysis in the next couple days, since there doesn't seem to be one online.
Portman
Zac
+15  A: 

Findstr is fairly powerful, supports RegEx and has the advantages of being on all Windows machines already.

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
Ray Hayes
What FINDSTR lacks is an option to display only the count of lines containing the string. (like grep -c)If you need this you can use FIND /C.
Ra
If you want the FINDSTR power back (and your pattern isn't regex), you could always, with some small repetition, chain the two commands together: findstr /s ".ini" *.rlog | find /c ".ini"
Ray Hayes
Findstr does not have a fully RegEx support.
mcaaltuntas
.. the original post wasn't asking specifically for RegEx!
Ray Hayes
As per what I found with GNU Grep, it seems that FindStr doesn't like 10Mb text files either.
Peter M
+4  A: 

ack works well on Windows (if you've got Perl). I find it better than grep for many uses.

cjm
+6  A: 

Baregrep (Baretail is good too)

John Sheehan
+5  A: 

Cygwin includes grep. All the GNU tools amd Unix stuff works great on Windows if you install Cygwin.

http://www.cygwin.com/

Corey Goldberg
+8  A: 

PowerShell's Select-String cmdlet was fine in v1.0, but is significantly better for v2.0.

New parameters added to Select-String: Select-String cmdlet now supports new parameters, such as:

  • -Context: This allows you to see lines before and after the match line
  • -AllMatches: which allows you to see all matches in a line (Previously, you could see only the first match in a line)
  • -NotMatch: Equivalent to grep -v o
  • -Encoding: to specify the character encoding
Jay Bazuzi
+1  A: 

Well, beside the Windows port of the GNU grep at:

http://gnuwin32.sourceforge.net/

there's also Borland's grep (very similar to GNU one) available in the freeware Borland's Free C++ Compiler (it's a freeware with command line tools).

Milan Babuškov
+1  A: 

UnxUtils is the one I use, works perfectly for me...

Johan
+3  A: 

It may not exactly fall into the 'grep' category, but I couldn't get by on Windows without a utility called AgentRansack. It's a gui-based "find in files" utility with regex support. It's dead simple to right-click on a folder, hit "ransack.." and find files containing what you're looking for. Extremely fast too.

+2  A: 

I have successfully used GNU utilities for Win32 for quite some time and it has a good grep as well as tail and other handy gnu utils for win32. I avoid the packaged shell and simply use the executables right in win32 command prompt.

The Tail that is packaged is quite a good little application as well.

A: 

FindStr is on all Windows machines? Not the one I just tried it on...

Noah
This would be better as a comment on http://stackoverflow.com/questions/87350/what-are-good-grep-tool-for-windows/87394#87394
Portman
+2  A: 

It's been a couple of years since you asked the question, but I'd recommend AstroGrep (http://astrogrep.sourceforge.net).

It's free, open source, and has a simple interface. I use it to search code all the time.

jj