Windows有哪些好的grep工具?[关闭]


289

关于Windows的grep工具有什么建议吗?理想情况下,可以利用64位OS。

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

Answers:


204

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


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

我知道您已经提到过,但是PowerGREP 很棒

我最喜欢的一些功能是:

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

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

来自那些带给您RegexBuddy的杰出人士,而我除了热爱他们的东西外没有任何关系。(应注意,RegexBuddy本身包含基本版本的grep(适用于Windows),并且其价格比PowerGREP低很多。)


其他解决方案

现有的Windows命令

Windows上的Linux命令实现

具有图形界面的Grep工具

其他Grep工具


4
我很想找到一个开源的grep gui,它既易于使用,又具有PowerGREP的全部功能,但是我还没有找到一个:)。我确实安装了Cygwin,并从中大量使用了grep。
Mark Biek 2010年

21
@Wells-Windows上的纯旧* nix grep可通过Cygwin或GnuWin32免费获得。Windows还附带了FindStr和Find。具有出色GUI的Grep,可替换的功能以及集成的撤消功能以及许多其他功能。
Mike Clark,2010年

11
@ Wells,@ Mike Clark,@ Mark Biek:我认为发布此答案时可能没有适用于Windows的免费GUI grep工具,但现在不再如此。grepWin具有此答案中列出的所有功能,现在可能还会有其他竞争对手。
约翰Y

9
@Wells,讨厌Windows,因为Grep工具的价格为159美元,就像讨厌汽车,因为脚垫很贵。
md1337

9
@韦尔斯和支持者:牛肉是什么?Windows的其他几个GREP工具与unix / linux一样免费。确实,这就是我对Windows生态系统的热爱-如果这是您的主要标准,那么它是免费的,并且该生态系统通常支持付费开发人员探索更多功能,例如使用PowerGREP。PowerGREP可能不是每个人都可以喝的茶(有时它的UI势不可挡),但是它的精心设计确实有用。
gwideman

322

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 *


2
FINDSTR缺少的是一个仅显示包含字符串的行数的选项。(例如grep -c),如果需要,可以使用FIND / C。
Ra。

2
如果您希望FINDSTR断电(并且您的模式不是正则表达式),则总是可以通过一些小的重复将两个命令链接在一起:findstr / s“ .ini” * .rlog | 找到/ c“ .ini”
Ray Hayes

10
Findstr没有完全的RegEx支持。
caltuntas

5
..原始帖子不是专门要求RegEx!
Ray Hayes

24
好的,发现它不是grep,正如其他一些评论员指出的那样。但我什至不知道它的存在,因此,+ 1先生,您好!
T.Rob

107

GrepWin免费和开源(GPL)

在此处输入图片说明我一直在使用由一个tortoisesvn家伙编写的grepWin。在Windows上执行作业...

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


2
而且它是免费的,它能够在隐藏的目录/文件搜索的其中PowerGrep不能够做正确的...
杰罗姆Verstrynge

3
似乎没有命令行界面。
安德烈亚斯·哈弗堡

2
很好,但是它仅提供了一行上下文,并且在完成整个搜索之前您看不到该上下文。
马修·洛克

2
似乎是一个不错的简单工具。但是我需要将结果保存在文件中,并且似乎无法选择导出。仅出于这个原因,我选择了AstroGrep。
罗斯

不在pdf中搜索
JinSnow

53

2013年7月更新:

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

AstroGrep很棒

它给我展示的不仅仅是行搜索(即命令行grep的--context = NUM​​)的能力是无价的。
而且速度很快。即使在使用非SSD驱动器的旧计算机上,速度也非常快(我知道,他们曾经使用旋转磁盘(称为盘片)来做这个硬盘驱动器,疯狂吗?)

这是免费的。
它是便携式的(简单的zip存档即可解压缩)。


原答复2008年10月

替代文字Gnu Grep很好

您可以在这里下载示例:(site ftp

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

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

另请参阅我用于递归grep选项

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

我刚刚开始寻找Gnu Grep的替代产品,因为Windows版本似乎无法处理我的10 Mb文本文件。它只是坐在那里,假装没有找到任何东西。如果我减小文件大小,它将开始工作。
Peter M

您好VonV,您的“常用选项”链接已变为:404-找不到页面。请考虑编辑您的答案。
eeerahul 2013年

1
@eeerahul链接已恢复,并添加了示例
VonC

AstroGrep是好的,但不幸的是它目前所缺乏“查找和替换”功能,这对我来说是大忌
卢卡斯Wiatrak

它缺乏“替换”功能
XristosK

30

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

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

  • -上下文:这使您可以看到匹配行之前和之后的行
  • -AllMatches:它允许您查看一行中的所有匹配项(以前,您只能看到一行中的第一个匹配项)
  • -NotMatch:等效于grep -vo
  • -Encoding:指定字符编码

我觉得适宜创建一个功能gcirGet-ChildItem -Recurse .,以智慧来正确地传递参数,以及别名ssSelect-String。所以你写:

gcir * .txt | ss foo


3
grep -R等价示例:Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive“ SomeString”
jslatts 2011年

6
我真的很喜欢PS中引入的许多功能,但是为什么每个命令都必须比普通的COBOL程序长?
evilcandybag '02

3
@evilcandybag:由于具有出色的自动完成功能,包括参数名称上的自动完成功能,因此键入PowerShell命令行既快捷又容易,我可以读取结果。
杰伊·巴祖兹

1
@jslatts:或者您可以使用别名和部分参数名称,它是ls . *.txt -r| sls -ca "SomeString"
Rynant 2015年

1
在现有的别名slsSelect-String真的太长了?
乔伊,

23

它可能不完全属于'grep'类别,但是如果没有名为AgentRansack的实用程序,我将无法在Windows上使用。这是一个基于gui的“查找文件”实用程序,带有正则表达式支持。右键单击一个文件夹,单击“ ransack ..”,然后找到包含所需内容的文件,这非常简单。也非常快。


不幸的是,它无法在相关行打开外部文本编辑器。
Pawel Furmaniak

1
尝试使用付费版本Filelocator Pro,这是我迄今为止使用过的最好的grep工具。
伊恩·斯坦威

Filelocator pro是否可以替代?
alimack

它有一个非常漂亮的界面,它可以替代吗?
alimack '17

此外,它现在被称为Filelocator精简版
alimack

19

Baregrep尾巴也很好)


不适用于win7 64位;(
丹尼尔·马格努森

我很确定他们现在已经解决了这个问题。我对BareTail的主要抱怨是,您不能“过滤”日志以隐藏(不只是彩色)不相关的行。
Ed Brannin 2012年

1
您可以使用BareTailPro进行过滤和搜索,而不能使用免费版本(BareTail)。
粘土

我很确定他们目前尚未解决此问题,因为自2006
。– alldayremix 2013年

4
它在Windows 7 Pro 64bit上可以正常工作。
cb88

17

您问这个问题已有两年了,但我建议您使用AstroGrep(http://astrogrep.sourceforge.net)。

它是免费的,开源的,并且具有简单的界面。我一直用它来搜索代码。


但它不会以pdf格式进行搜索
JinSnow

16

PowerShell已被提及过几次。这是您实际使用grepish方式的方式:

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配置文件中,几乎可以减轻没有适当命令行工具的痛苦。





10

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

  • 撤消替换
  • 可以通过右键单击资源管理器中的文件夹进行搜索
  • 进阶搜寻选项,例如语音搜寻和xpath
  • 搜索内部PDF文件,档案和Word文档

恕我直言,它也有一个很好的界面:)


1
我已经尝试了许多建议的grep工具,对我来说,dnGrep胜出。
flobadob 2013年

它以pdf格式进行搜索,但不以epub进行搜索
JinSnow

编辑:它可以搜索epub。您必须像这样添加它:github.com/dnGrep/dnGrep/issues/200
JinSnow

7

我一直使用WinGREP,但是我遇到了一些问题,即文件无法释放


2
我使用wingrep已经好几年了,除了目录选择框太小之外,这非常好
Cruachan

许可证要求你30天EVAL后为它付出。
筹码

它具有许多grep工具不具备的出色功能,即可以反转匹配项。例如,查找HTML文件中没有内容时非常方便。
马修·洛克

我注意到WinGrep的一个非常烦人的功能。似乎文件锁定了所有匹配项,因此,如果您尝试在Windows资源管理器中删除其中一个文件,则必须先关闭WinGrep,然后才能删除。
马修·洛克

如果它可以在搜索结果中进行搜索,进一步缩小列表的范围,那对我来说将是一个理想的工具。
沙米尔2014年


7

我已经在Win32上成功使用了GNU实用程序,并且它具有良好的grep以及win32的tail和其他方便的gnu utils。我避免使用打包的外壳,而只是在win32命令提示符中直接使用可执行文件。

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


6

我是Aba Search and Replace的作者就像PowerGREP一样,它支持正则表达式,保存模式以备将来使用,撤消以替代替换,使用HTML / CSS / JS / PHP语法突出显示预览,不同的编码(包括UTF-8和UTF-16)。

与PowerGREP相比,GUI 不那么混乱。当您键入模式时,Aba会立即开始搜索(增量搜索),因此您可以尝试使用正则表达式并立即查看结果。

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


4

我想要一个适用于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”。



3

我使用了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

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

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

不幸的是停产了,我已经使用了多年。
alimack '17

@alimack是的,我最近自己注意到了这一点。但是,该工具仍然有效(至少在Windows 7上),并且仍可以从CNET之类的网站下载。真可惜,这是一个非常不错的工具。
约翰N

在寻找替代产品时,PowerGREP前景看好但界面丑陋且价格昂贵。尝试了grepWin,骨头太裸了,Filelocator似乎并没有替换文本。欢迎提出建议-特别喜欢在我决定替换之前看到结果。
alimack

2

PowerShell的选择字符串与之类似,它的选项和语义不尽相同,但功能仍然很强大。


2

如果您想要一个简单易用的Windows Grep工具,我创建了一个名为P-Grep的工具,该工具可从我的网站免费下载:www.adjutantit.com-主菜单,下载。

Windows Grep似乎在处理大量文件时遇到问题,因此我编写了自己的文件-似乎更可靠。您可以选择一个文件夹,右键单击并将其发送到P-Grep。在安装过程中,sendto文件夹将被删除。


2

另一个不错的选择是MSYS。它为您提供了一堆其他的GNU实用程序,使您的工作效率更高。


1

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

我在64位Windows 7 Ultimate上使用它,因此它的64位凭据很好。


1

Windows版GREP

我一直在使用它,幸运的是它仍然可用。它超快而且很小。


甚至还有GUI?我只是从命令行使用它,所以我从未意识到。
bbrown 2012年

我一直在寻找一种简单的方法来显示比赛前后的线条,而这确实做到了。例如:运行'netstat -anb | grep的-B1 22'知道哪些程序侦听端口22
扬埃尔哈特

0

如果所有解决方案都不是您所需要的,也许您可​​以为FindStr写一个包装程序,该包装程序完全满足您的要求?

无论如何,FindStr都是相当不错的,因此它应该只是关闭GUI(如果需要)并提供一些额外的功能(例如将其与Find结合以查找包含指定字符串的文件数[如上所述])。

当然,这假设您有这样做的要求,时间和意愿!


0

我有Cygwin的我的机器上安装,并把Cygwin的bin目录在我的环境路径,所以在Cygwin grep的作品像正常的在解决目前的grep为我所有的脚本需要一个命令行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.