it-swarm.cn

什么是视窗的优秀grep的工具?

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

我知道 Cygwin ,当然,也找到了 PowerGREP ,但我想知道那里有没有隐藏的宝石?

290
Portman

根据评论中的建议,我已经开始使用 grepWin ,这很棒,免费


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

我知道你已经提到了它,但是PowerGREP是 很棒

我最喜欢的一些功能是:

  • 右键单击文件夹以在其上运行PowerGREP
  • 使用正则表达式或文字文本
  • 为要包含和排除的文件指定通配符
  • 搜索和替换
  • 预览模式很好,因为您可以确保您正在替换您想要的内容。

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

来自同样精彩的人们带给你 RegexBuddy 和我没有任何关系,除了爱他们的东西。(应该注意RegexBuddy包括grep的基本版本(对于Windows)本身,它的成本远低于PowerGREP。)


其他解决方案

现有的Windows命令

Windows上的Linux命令实现

Grep工具带有图形界面

额外的Grep工具

187
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 *

314
Ray Hayes

GrepWin 免费和开源(GPL)

enter image description here我一直在使用grepWin,这是由一个tortoisesvn家伙写的。 Windows上的工作是......

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

104
Stan Sarama

2013年7月更新:

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

AstroGrep awesomeness

它能够向我展示的不仅仅是行搜索(即--context =命令行grep的NUM)是非常宝贵的。
而且很快。非常快,即使在使用非 SSD 驱动器的旧计算机上(我知道,他们曾经用旋转磁盘做这个硬盘,称为 platters ,疯了吗? )

这是免费的。
它是可移植的(简单的Zip存档解压缩)。


原始答案2008年10月

alt textGnu Grep 没问题

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

所有 通常选项 都在这里。

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

另请参阅我正在使用的 options以递归方式

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

PowerShell的Select-String cmdlet在v1.0中很好,但是 对于v2.0明显更好 。将PowerShell内置到最新版本的Windows中意味着您的技能始终有用,无需先安装。

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

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

我发现为Get-ChildItem -Recurse .创建函数gcir是很方便的,智能可以正确传递参数,而Select-String则是别名ss。所以你写一下:

gcir * .txt | ss foo

30
Jay Bazuzi

它可能不完全属于'grep'类别,但是如果没有名为 AgentRansack 的实用程序,我无法在Windows上使用它。它是一个基于gui的“在文件中查找”实用程序,具有正则表达式支持。右键单击文件夹,点击“搜索...”并查找包含您要查找的内容的文件非常简单。非常快。

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。所有GNU工具如果安装Cygwin,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
Daniel Magnusson

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

  • 撤消替换
  • 能够通过在资源管理器中右键单击文件夹进行搜索
  • 提前搜索选项,如语音搜索和xpath
  • 在PDF文件,档案和Word文档中搜索

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

10
stankovski

我总是使用 WinGREP ,但我遇到的问题是不放弃文件。

7
Tom Kidd

我已成功使用 GNU实用程序用于Win32 已经有一段时间了,它有一个很好的grep以及tail和其他方便的gnu工具,用于win32。我避免使用打包的Shell,只需在win32命令提示符中使用可执行文件。

打包的Tail也是一个非常好的小应用程序。

7
user17314

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

http://gnuwin32.sourceforge.net/

borland的免费C++编译器(它是一个带命令行工具的免费软件)中也有Borland的grep(非常类似于GNU one)。

7
Milan Babuškov

我是 Aba Search and Replace的作者。 就像PowerGREP一样,它支持正则表达式,保存模式以供进一步使用,撤消替换,使用HTML/CSS/JS/PHP的语法高亮预览,以及不同的编码,包括UTF-8和UTF-16。

与PowerGREP相比,GUI是不那么杂乱。 Aba在你输入模式(增量搜索),时立即开始搜索,这样你就可以试验正则表达式并立即看到结果。

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

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文件夹中。

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

我想在下一步做的事情是将findstr的输出通过生成html文件的内容来管道,以便您可以单击每个输出行来打开该文件。此外,我不认为它适用于文件夹的快捷方式。我必须检查参数,看它是否包含“.lnk”。

4
Philip Beck

我选择的工具是适当命名的 Windows Grep

  • 很简单的GUI
  • 支持搜索和替换
  • 可以显示找到的线条周围的线条
  • 可以在CSV和固定宽度文件中的列内搜索
3
John N

UnxUtils 是我使用的,对我来说非常适合......

3
Johan

我使用Borland的grep多年,但只是发现了一个不匹配的模式。 Eeeks。多年来还发现了什么呢?我写了一个简单的文本搜索替换,它像grep一样进行递归 - 它是source forge上的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

GREP for Windows

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

1
bbrown

PowerShell select-string类似,它的选项和语义不同,但它仍然很强大。

1
Jim Deville

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

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

1
CrispinH

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

0
Satyrn

如果没有一个解决方案是你正在寻找的,也许你可以写一个FindStr的包装器,它完全符合你的要求吗?

无论如何,FindStr非常好,所以它应该只是敲击一个GUI(如果你想要的话)并提供一些额外的功能(比如将它与Find组合以查找包含指定字符串的文件的数量[如上所述])。

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

0
Stefan