Answers:
(我仍然是PowerGREP的粉丝,但是我不再使用它了。)
我知道您已经提到过,但是PowerGREP 很棒。
我最喜欢的一些功能是:
现在,我意识到其他grep工具可以完成上述所有操作。只是PowerGREP将所有功能打包到一个非常易于使用的GUI中。
来自那些带给您RegexBuddy的杰出人士,而我除了热爱他们的东西外没有任何关系。(应注意,RegexBuddy本身包含基本版本的grep(适用于Windows),并且其价格比PowerGREP低很多。)
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 *
GrepWin免费和开源(GPL)
我一直在使用由一个tortoisesvn家伙编写的grepWin。在Windows上执行作业...
2013年7月更新:
我现在在Windows上一直使用的另一个grep工具是AstroGrep:
它给我展示的不仅仅是行搜索(即命令行grep的--context = NUM)的能力是无价的。
而且速度很快。即使在使用非SSD驱动器的旧计算机上,速度也非常快(我知道,他们曾经使用旋转磁盘(称为盘片)来做这个硬盘驱动器,疯狂吗?)
这是免费的。
它是便携式的(简单的zip存档即可解压缩)。
原答复2008年10月
Gnu Grep很好
您可以在这里下载示例:(site ftp)
所有常用的选项都在这里。
结合了gawk和xargs(包括来自GnuWin32的 'find' ),您可以真正像在Unix上一样编写脚本!
grep --include "*.xxx" -nRHI "my Text to grep" *
PowerShell的Select-String cmdlet在v1.0中很好,但对于v2.0则明显更好。在Windows的最新版本中内置PowerShell意味着您在这里的技能将总是有用的,而无需先安装某些东西。
添加到Select-String的新参数:Select-String cmdlet现在支持新参数,例如:
- -上下文:这使您可以看到匹配行之前和之后的行
- -AllMatches:它允许您查看一行中的所有匹配项(以前,您只能看到一行中的第一个匹配项)
- -NotMatch:等效于grep -vo
- -Encoding:指定字符编码
我觉得适宜创建一个功能gcir
为Get-ChildItem -Recurse .
,以智慧来正确地传递参数,以及别名ss
为Select-String
。所以你写:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
为Select-String
真的太长了?
它可能不完全属于'grep'类别,但是如果没有名为AgentRansack的实用程序,我将无法在Windows上使用。这是一个基于gui的“查找文件”实用程序,带有正则表达式支持。右键单击一个文件夹,单击“ ransack ..”,然后找到包含所需内容的文件,这非常简单。也非常快。
您问这个问题已有两年了,但我建议您使用AstroGrep(http://astrogrep.sourceforge.net)。
它是免费的,开源的,并且具有简单的界面。我一直用它来搜索代码。
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配置文件中,几乎可以减轻没有适当命令行工具的痛苦。
Cygwin包括grep。如果您安装Cygwin,则所有GNU工具和Unix东西在Windows上都可以很好地工作。
Windows上的Git = cmd.exe中的grep
我刚刚发现安装Git将为您提供一些基本的Linux命令:cat,grep,scp和所有其他好的命令。
安装,然后将Git bin文件夹添加到PATH中,然后cmd.exe具有基本的Linux功能!
dnGREP是Windows的开源grep工具。它支持许多很酷的功能,包括:
恕我直言,它也有一个很好的界面:)
好吧,在GNU grep的Windows端口旁边:
http://gnuwin32.sourceforge.net/
免费软件Borland的Free C ++编译器(它是带有命令行工具的免费软件)中还提供了Borland的grep(非常类似于GNU)。
我是Aba Search and Replace的作者。就像PowerGREP一样,它支持正则表达式,保存模式以备将来使用,撤消以替代替换,使用HTML / CSS / JS / PHP语法突出显示预览,不同的编码(包括UTF-8和UTF-16)。
与PowerGREP相比,GUI 不那么混乱。当您键入模式时,Aba会立即开始搜索(增量搜索),因此您可以尝试使用正则表达式并立即查看结果。
欢迎您试用我的工具;我很乐意回答任何问题。
我想要一个适用于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”。
我使用了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]
我选择的工具是适当命名的Windows Grep:
我一直在使用它,幸运的是它仍然可用。它超快而且很小。