什么是Windows的良好的grep工具?

任何关于Windows的grep工具的build议? 理想情况下,可以利用64位操作系统。

当然,我知道Cygwin ,也发现了PowerGREP ,但是我想知道那里是否有隐藏的gem?

根据评论中的build议,我已经开始使用grepWin ,它非常棒, 免费


(我仍然是PowerGREP的粉丝,但是我不再使用它了。)

我知道你已经提到过,但是PowerGREP 真棒

我最喜欢的function是:

  • 右键单击一个文件夹,在其上运行PowerGREP
  • 使用正则expression式或文字文本
  • 指定包含&排除的文件的通配符
  • search和replace
  • 预览模式是很好的,因为你可以确保你正在取代你想要的。

现在我意识到其他的grep工具可以完成以上所有的工作。 PowerGREP只是将所有function打包成一个非常易于使用的GUI。

从同样给你带来的RegexBuddy和我没有从属关系的美妙的人,超越爱他们的东西。 (应该指出的是,RegexBuddy本身包含一个基本版本的grep(对于Windows),它的成本比PowerGREP低很多。)


其他解决scheme

现有的Windows命令

  • FINDSTR
  • 在PowerShell中selectstring

Windows上的Linux命令实现

  • Cygwin的
  • 现金

grep工具与graphics界面

  • AstroGrep
  • BareGrep
  • GrepWin

额外的Grep工具

  • dnGrep

FINDSTRfunction相当强大,支持正则expression式,并且已经在所有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" xy' searches for "hello" or "there" in file xy 'FINDSTR /C:"hello there" xy' searches for "hello there" in file xy 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 [xy] 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 *或者recursionsearchfindstr /s text_to_find *

GrepWin免费和开源(GPL)

在这里输入图像说明 我一直在使用grepWin,这是由一个tortoisesvn家伙写的。 在Windows上的工作…

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

2013年7月更新:

我现在在Windows上一直使用的另一个grep工具是AstroGrep

AstroGrep真棒

它能够显示我不仅仅是行search(即命令行grep的–context = NUM​​),这是非常宝贵的。
而且速度很快。 非常快,甚至在一个非SSD硬盘的老电脑(我知道,他们曾经用旋转磁盘,称为盘片 ,这是疯狂的权利?

这是免费的。
它是可移植的(简单的zip压缩文件解压缩)。


原始答复2008年10月

替代文字 Gnu Grep是没问题的

你可以在这里下载它:( site ftp )

所有常见的选项都在这里。

结合gawk和xargs (包括来自GnuWin32的 'find'),你可以像在Unix上一样编写脚本!

另请参阅我用来recursiongrep的选项 :

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

PowerShell的Select-String cmdlet在v1.0版本中很好,但是对于v2.0来说明显更好 。 有PowerShell内置到最新版本的Windows意味着你的技能总是有用的,没有先安装的东西。

添加到Select-String的新参数 :Select-String cmdlet现在支持新参数,例如:

  • -Context:这允许你查看匹配行前后的行
  • -AllMatches:它允许你看到一行中的所有匹配(以前,你只能看到一行中的第一个匹配)
  • -NotMatch:相当于grep -vo
  • -Encoding:指定字符编码

我发现为Get-ChildItem -Recurse .创build一个函数gcir是合适的Get-ChildItem -Recurse . Select-String传递正确的参数,并为Select-String别名ss 。 所以你写一个:

gcir * .txt | ss foo

它可能不完全属于“grep”类别,但是如果没有名为AgentRansack的实用程序,我无法在Windows上通过。 这是一个基于GUI的“查找文件”工具,支持正则expression式。 这是很简单的右键单击一个文件夹,点击“ransack ..”,并find文件包含你在找什么。 也非常快。

Baregrep ( Baretail也不错)

你问这个问题已经有两年了,但是我推荐AstroGrep( http://astrogrep.sourceforge.net )。

它是免费的,开源的,并有一个简单的界面。 我一直用它来search代码。

PowerShell已经被提了几次了。 以下是你如何以一种狡猾的方式实际使用它:

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

它recursion地search当前目录树中的所有文本文件,以区分大小写。

更好的是,运行这个:

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

然后做:

 pgrep SomeStringToSearch *.txt 

然后为了让它变得神奇,把函数别名添加到你的PowerShellconfiguration文件中 ,你几乎可以避免没有适当的命令行工具的痛苦。

Cygwin包含grep。 如果你安装了Cygwin,所有的GNU工具和Unix的东西都可以在Windows上使用。

http://www.cygwin.com/

ack在Windows上运行良好(如果你有Perl的话 )。 我发现它比grep更适合多种用途。

Git on Windows = grep in cmd.exe

我刚刚发现安装Git会给你一些基本的Linux命令:猫,grep,scp和所有其他好的。

安装然后将Git bin文件夹添加到您的PATH,然后您的cmd.exe具有基本的Linuxfunction!

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

dnGREP是一个用于Windows的开源grep工具。 它支持许多很酷的function,包括:

  • 撤消replace
  • 能够通过右键单击浏览器中的文件夹进行search
  • 高级search选项,如语音search和xpath
  • 在PDF文件,档案和Word文档中search

恕我直言,它有一个不错的和干净的界面:)

我总是使用WinGREP ,但是我遇到了问题,不能放开文件。

那么,在GNU grep的Windows端口旁边:

http://gnuwin32.sourceforge.net/

还有Borland的免费C ++编译器(这是一个免费的命令行工具)提供的grep(非常类似于GNU的)。

我已经成功地使用了Win32的GNU工具很久了,它有一个很好的grep以及用于win32的tail和其他方便的gnu utils。 我避免了打包的shell,只需在win32命令提示符下使用可执行文件。

包装的尾巴也是一个很好的小应用程序。

我是Abasearch和replace的作者。 就像PowerGREP一样,它支持正则expression式,保存模式以供进一步使用,取消replace,HTML / CSS / JS / PHP语法突出显示,不同的编码,包括UTF-8和UTF-16。

与PowerGREP相比,GUI 不那么混乱。 当您input模式(增量search)时, Aba会立即开始search因此您可以使用正则expression式进行试验并立即查看结果。

欢迎您来尝试我的工具; 我会很乐意回答任何问题。

我想要一个Windows免费的grep工具,允许你右键点击一个文件夹,并对每个文件进行正则expression式search – 没有任何麻烦的屏幕。

以下是基于上一篇文章中提到的findstr的快速解决scheme。

在硬盘上的某个地方创build一个文本文件,您可以在其中保存长期存在的工具。 重命名为.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并将该batch file的快捷方式拖动到该SendTo文件夹。

我将该快捷方式重命名为1 GREP以将其保存在SendTo列表的顶部。

接下来要做的事情是通过一些可以生成html文件的东西来pipe理findstr的输出,以便可以单击每个输出行来打开该文件。 另外,我不认为它适用于文件夹的快捷方式。 我必须检查参数,看它是否包含“.lnk”。

UnxUtils是我使用的,完全适合我…

我使用了Borland的grep多年,但只是find了一个不匹配的模式。 Eeeks。 那么多年来还没有发现什么呢? 我写了一个简单的文本searchreplace,像greprecursion – 这是源码伪造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] 

我select的工具是适当命名的Windows Grep :

  • 很好的简单的GUI
  • 支持search和replace
  • 可以显示find的线条周围的线条
  • 可以在CSV和固定宽度文件的列中进行search

如果你想简单的使用Windows Grep工具,我创build了一个名为P-Grep的,我可以从我的网站免费下载:www.adjutantit.com – 主页菜单,下载。

Windows Grep似乎有大量文件的问题,所以我写了我自己的 – 这似乎更可靠。 你可以select一个文件夹,右键点击并发送给P-Grep。 sendto文件夹在安装过程中会被取消。

另一个不错的select是MSYS 。 它给了你一堆其他的GNU工具,让你更有效率。

PowerShell的selectstring是相似的,它不是相同的选项和语义,但它仍然强大。

多年来,我一直在使用AJC Grep 。 我发现唯一的主要限制是文件path限制为255个字符,遇到它时会停止,而不仅仅是发出警告。 这很烦人,但不经常发生。

我在64位Windows 7旗舰版上使用它,所以它的64位凭证没问题。

GREP for Windows

我一直在使用它,幸运的是它仍然可用。 这是超快,非常小。

如果没有解决scheme是你正在寻找的东西,也许你可以写一个FindStr的包装,这正是你所需要的?

无论如何FindStr是相当不错的,所以它应该只是敲了一个graphics用户界面(如果你想要的话),并提供一些额外的function(如结合它与查找包含指定的string[上面提到]的文件的计数)。

这当然,假设你有这样的要求,时间和倾向!

我在我的机器上安装了Cygwin,并将Cygwin bin目录放在我的环境path中,所以Cygwin grep在命令行中正常工作,此时解决了我对grep的所有脚本需求。