【问题标题】:What are good grep tools for Windows? [closed]什么是适用于 Windows 的好 grep 工具? [关闭]
【发布时间】:2010-09-10 09:11:33
【问题描述】:

对于 Windows 的 grep 工具有什么建议吗?理想情况下,可以利用 64 位操作系统。

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

【问题讨论】:

    标签: windows grep


    【解决方案1】:

    如果没有一个解决方案完全符合您的要求,也许您可​​以为FindStr 编写一个包装器来满足您的要求?

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

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

    【讨论】:

      【解决方案2】:

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

      Windows Grep 似乎有大量文件的问题,所以我自己写了 - 这似乎更可靠。您可以选择一个文件夹,右键单击并将其发送到 P-Grep。 sendto 文件夹会在安装过程中更新。

      【讨论】:

      • 链接已损坏:“嗯。我们无法找到该站点。我们无法连接到 www.adjutantit.com 上的服务器。”跨度>
      【解决方案3】:

      我多年来一直使用 Borland 的 grep,但我只是发现了一个不匹配的模式。埃克斯。这些年来它还没有发现什么?我写了一个简单的文本搜索替换,它像 grep 一样进行递归 - 它是 SourceForge 上的 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]
      

      【讨论】:

        【解决方案4】:

        GrepWin 是免费和开源的 (GPL)

        我一直在使用由TortoiseSVN 中的一个人编写的 grepWin。它在 Windows 上完成了这项工作......

        【讨论】:

        • 而且它是免费的,它能够在 PowerGrep 无法正常执行的隐藏目录/文件中进行搜索...
        • 好像没有命令行界面。
        • 很好,但它只提供一行上下文,并且在完成整个搜索之前你无法看到该上下文。
        • 这似乎是一个不错且简单的工具。但我需要文件中的结果,它似乎没有给我导出的选项。仅出于这个原因,我就选择了 AstroGrep。
        • 不在 pdf 中搜索
        【解决方案5】:

        我推荐AstroGrep

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

        【讨论】:

        • 但它不在 pdf 中搜索
        • 这已经包含在另一个答案中。
        【解决方案6】:

        我已经成功使用GNU utilities for Win32 有一段时间了,它有一个很好的grep 以及tail 和其他方便的Win32 GNU 实用程序。我避免使用打包的 shell,直接在 Win32 命令提示符下使用可执行文件。

        打包出来的tail也是一个不错的小应用。

        【讨论】:

          【解决方案7】:

          它可能不完全属于“grep”类别,但如果没有名为 AgentRansack 的实用程序,我无法在 Windows 上使用。它是一个基于 GUI 的“在文件中查找”实用程序,支持正则表达式。

          右键单击文件夹,点击“ransack..”并查找包含您要查找的文件的文件非常简单。它也非常快。

          【讨论】:

          • 很遗憾,它无法在相关行打开外部文本编辑器。
          • 试用名为 Filelocator Pro 的付费版本,这是迄今为止我用过的最好的 grep 工具。
          • Filelocator pro 可以替换吗?
          • 它有一个非常好的界面,它可以替换吗?
          • 现在也称为 Filelocator lite
          【解决方案8】:

          UnxUtils 是我使用的那个,它非常适合我...

          【讨论】:

            【解决方案9】:

            嗯,除了Windows port of the GNU grep,免费软件 Borland 的 Free C++ Compiler(它是一个带有命令行工具的免费软件)中还有 Borland 的 grep(非常类似于 GNU 的)。

            【讨论】:

              【解决方案10】:

              PowerShell 的 Select-String cmdlet 在 v1.0 中很好,但它是 significantly better for v2.0。将 PowerShell 内置到最新版本的 Windows 意味着您在这里的技能将始终有用,而无需先安装一些东西。

              Select-String 新增参数:Select-String cmdlet 现在支持新参数,例如:

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

              我发现为Get-ChildItem -Recurse . 创建一个函数gcir 是方便的,它具有正确传递参数的智能,并为Select-String 创建一个别名ss。所以你写:

              gcir *.txt |咝咝咝

              【讨论】:

              • grep -R 等效示例:Get-ChildItem -recurse -include *.txt | Select-String -CaseSenstive "SomeString"
              • 我真的很喜欢 PS 中引入的很多功能,但为什么每个命令都必须比普通的 COBOL 程序长?
              • @evilcandybag:感谢强大的自动完成功能,包括参数名称的自动完成功能,键入 PowerShell 命令行既快速又简单,我可以阅读结果。
              • @jslatts: 或者你可以使用别名和部分参数名称,它会是ls . *.txt -r| sls -ca "SomeString"
              • sls 的现有别名 Select-String 真的太长了吗?
              【解决方案11】:

              Cygwin 包括 grep。如果你安装了 Cygwin,所有 GNU 工具和 Unix 的东西都可以在 Windows 上很好地工作。

              【讨论】:

                【解决方案12】:

                PowerShell 的Select-String 类似。它没有相同的选项和语义,但仍然很强大。

                【讨论】:

                  【解决方案13】:

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

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

                  【讨论】:

                  • 很遗憾停产了,我用了好几年了。
                  • @alimack 是的,我最近自己也注意到了这一点。但是,该工具仍然有效(至少在 Windows 7 上),并且仍然可以从 CNET 之类的网站下载。很遗憾,这是一个非常好的工具。
                  • 正在寻找替代品,PowerGREP 很有前途,但界面丑陋,而且价格昂贵。试过grepWin,太简陋了,Filelocator似乎没有替换文本。欢迎提出建议 - 特别是在我承诺更换之前查看结果。
                  • 这么多年过去了,我还在使用 Windows Grep! :) 唯一令人讨厌的是,正如@alimack 所提到的,它已停止使用,因此您无法注册程序并在退出应用程序时禁用“注册”消息。 (除非有人有密钥并且可以共享一个?;))
                  • @tripleee 链接已删除 - 感谢提醒
                  【解决方案14】:

                  根据 cmets 中的建议,我已开始使用 grepWin,它非常棒且免费


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

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

                  我最喜欢的一些功能是:

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

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

                  来自为您带来 RegexBuddy 的同样出色的人,除了热爱他们的东西之外,我与他们没有任何关系。(应该注意,RegexBuddy 包括一个基本的grep 版本(适用于 Windows)本身,它的成本比 PowerGREP 低很多。)


                  其他解决方案

                  现有的 Windows 命令

                  Windows 上的 Linux 命令实现

                  带有图形界面的 Grep 工具

                  其他 Grep 工具

                  【讨论】:

                  • 我很想找到一个像 PowerGREP 一样易于使用且功能齐全的开源 grep gui,但我还没有找到 :)。我确实安装了 Cygwin,并且也经常使用 grep。
                  • @Wells - Windows 上的普通旧 *nix grep 可通过 Cygwin 或 GnuWin32 免费。 FindStr 和 Find 也随 Windows 一起提供。 Grep 具有出色的 GUI、替换功能和集成撤消功能,以及许多其他功能......是的......这需要您多花点钱。
                  • @Wells、@Mike Clark、@Mark Biek:我想发布此答案时可能没有适用于 Windows 的免费 G​​UI grep 工具,但它不再是真的。 grepWin 拥有这个答案中列出的所有功能,现在可能还有其他竞争对手。
                  • @Wells,因为一个 159 美元的 Grep 工具而讨厌 Windows 就像因为脚垫很贵而讨厌汽车。
                  • @Wells 和支持者:牛肉是什么?其他几个适用于 Windows 的 GREP 工具与适用于 unix/linux 的一样免费。确实,这就是我喜欢 Windows 生态系统的原因——如果这是您的主要标准,那么很多免费,并且该生态系统通常支持付费开发人员探索扩展功能,例如 PowerGREP。 PowerGREP 可能不是每个人都喜欢喝的茶(有时它的 UI 让人不知所措),但它的复杂性确实有实用性。
                  【解决方案15】:

                  FINDSTR 相当强大,支持regular expressions 并具有已经在所有 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 *

                  【讨论】:

                  • FINDSTR 缺少的是仅显示包含该字符串的行数的选项。 (如 grep -c)如果需要,可以使用 FIND /C。
                  • 如果你想恢复 FINDSTR 的力量(并且你的模式不是正则表达式),你总是可以通过一些小的重复,将两个命令链接在一起:findstr /s ".ini" *.rlog |查找 /c ".ini"
                  • Findstr 没有完全的 RegEx 支持。
                  • .. 原帖并不是专门要求 RegEx!
                  • OK findstr 它不是 grep,正如其他一些评论员所指出的那样。但我什至不知道它的存在所以+1 给你好先生发布它!
                  【解决方案16】:

                  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

                  【讨论】:

                  • 做到了!完美,现在我已经在没有第三方工具的情况下在系统上安装了 grep。
                  【解决方案17】:

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

                  【讨论】:

                    【解决方案18】:

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

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

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

                    【讨论】:

                    • 我已经尝试了很多建议的 grep 工具,对我来说,dnGrep 胜出。
                    • 它搜索pdf而不是epub
                    • 编辑:可以搜索epub。您必须像这样添加它:github.com/dnGrep/dnGrep/issues/200
                    【解决方案19】:

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

                    【讨论】:

                    【解决方案20】:

                    ack 在 Windows 上运行良好(如果你有 Perl)。我发现它在很多方面都比 grep 好。

                    【讨论】:

                      【解决方案21】:

                      2013 年 7 月更新:

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

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

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


                      2008 年 10 月的原始答案

                      Gnu Grep没事

                      例如,您可以在这里下载它:(site ftp)

                      所有usual options都在这里。

                      再加上gawkxargs(包括'find',来自GnuWin32),你就可以像在Unix 上一样编写脚本了!

                      另见options I am using to grep recursively

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

                      【讨论】:

                      • 我刚开始寻找 Gnu Grep 的替代品,因为 Windows 版本似乎无法处理我的 10 Mb 文本文件。它只是坐在那里,假装什么也没找到。如果我减小文件大小,它就会开始工作。
                      • 您好 VonV,您的“常用选项”链接已变为:404 - 未找到页面。请考虑修改您的答案。
                      • @eeerahul 链接已恢复,并添加示例
                      • AstroGrep 很不错,但不幸的是它目前缺少“查找和替换”功能,这对我来说是个大问题
                      • 缺少“替换”功能
                      【解决方案22】:

                      GREP for Windows

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

                      【讨论】:

                      • 还有图形用户界面吗?我只是从命令行使用它,所以我从来没有意识到。
                      • 我一直在寻找一种简单的方法来显示比赛前后的台词,而这个做到了。例如:运行'netstat -anb | grep -B1 22' 知道哪些程序监听端口 22。
                      【解决方案23】:

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

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

                      【讨论】:

                      • 这仅比 the common 260 character limit in Windows 少 5 (在某些情况下,在某些版本的 Windows 中可能会或可能不会被解除)。什么时候有所作为?您是否遇到 [256;260] 范围内的文件路径?
                      • 我几乎不再使用 AJC Grep,现在使用 grepWin。
                      【解决方案24】:

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

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

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

                      【讨论】:

                        【解决方案25】:

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

                        【讨论】:

                          【解决方案26】:

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

                          【讨论】:

                            【解决方案27】:

                            BaregrepBaretail也不错)

                            【讨论】:

                            • 在win7 64位上不工作;(
                            • 我很确定他们现在已经解决了这个问题。我对 BareTail 的主要抱怨是你不能“过滤”日志来隐藏(不仅仅是颜色)不相关的行。
                            • 您可以使用 BareTailPro 进行过滤和搜索,只是免费版 (BareTail) 不行。
                            • 我很确定他们现在还没有修复这个问题,因为它自 2006 年以来就没有更新过。
                            • 这里在 windows 7 Pro 64bit 上运行良好。
                            【解决方案28】:

                            我一直使用WinGREP,但我遇到了问题,它不能释放文件。

                            【讨论】:

                            • 我已经用wingrep好几年了,除了目录选择框太小之外,还不错
                            • license 要求您在 30 天评估后付费。
                            • 它有一个很多 grep 工具没有的很好的功能,即反转匹配的能力。例如,对于查找其中没有内容的 HTML 文件非常方便。
                            • 我注意到 WinGrep 的一个非常烦人的功能。它似乎对它所做的所有匹配都保持了文件锁定,因此,如果您尝试在 Windows 资源管理器中删除其中一个文件,则必须关闭 WinGrep。
                            • 如果它可以在搜索结果中搜索,进一步缩小列表,那对我来说将是一个理想的工具。
                            猜你喜欢
                            • 2010-09-06
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2011-07-24
                            • 1970-01-01
                            • 2010-09-15
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多