Is there a Pattern Matching Utility like GREP in Windows?
Windows命令提示符中是否提供与
所有Windows NT类操作系统附带一个名为
PowerShell(作为Windows 7 / 2008R2的标准提供,对于XP / 2003 / Vista / 2008是可选的),其中包括
适用于Windows的Grep,由GnuWin Project提供(2014-10-02:已过时,请参见下面的评论)
如前所述,findstr可以正常工作。例如:
C:> dir | findstr Windows
Windows 11/06/2013 09:55 PM
Cygwin grep等;)
我还发现了另一种在Windows 7及更高版本中利用类似GREP的功能的方法,而无需安装任何额外的应用程序,在较旧的系统上,您可以使用install Powershell。
在Powershell中,用户可以使用Where-Object,它具有相当全面的功能集,可提供GREP的所有功能以及更多功能。
希望能帮助到你。
我很惊讶没有人提到FINDSTR。我不是grep poweruser,但是findstr做了我需要的工作,使用一些原始的正则表达式支持来过滤文件和stdin。随Windows一起提供。 (编辑:有人提到了findstr,我想已经很晚了)
GnuWin32值得一提,它提供所有标准linux工具的本机Win32版本,包括grep,file,sed,groff,indent等。
当这些工具的新版本发布时,它会不断更新。
更新:最初询问该问题时并非如此,但现在Microsoft允许用户安装适用于Linux的Windows子系统,然后Windows将运行grep。在PowerShell中,运行:
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
在Windows上,我使用Far Manager进行文件搜索。 BSD许可,可在控制台中使用,节省了键入cmdline参数的时间。这是Alt-F7调用的搜索对话框。
UnxUtils是在Windows上运行的大量Unix实用程序。它具有grep,sed,gawk等。
出色且非常快速的文件搜索实用程序Agent Ransack支持正则表达式搜索。它主要是一个GUI实用程序,但也提供了命令行界面。
在Windows reskit中,有一个名为" qgrep"的实用程序。您可能已经在盒子上了。 ;-)它也带有" tail"命令,感谢上帝!
您显然已经获得了许多不同的建议。
对于免费的第三方实用程序,我个人的选择是:Agent Ransack
Agent Ransack下载
尽管其名称有些令人困惑,但它可以很好地工作,并且可以以多种方式用于查找文件。
祝好运
我将把我的$ 0.02添加到该线程中。 dnGREP是一款出色的Windows grep开源工具,支持撤消,Windows Explorer集成,在PDF,Zip,DOC和许多其他内容中进行搜索...
多合一busybox包含grep / egrep / sed / awk和许多其他内容
从中获取:
- http://frippery.org/busybox/index.html
- http://frippery.org/files/busybox/?C=M;O=D
更新:不再可用-或更旧
- https://github.com/pclouds/busybox-w32
是的,对于Windows PC,只有一个程序具有可靠的GUI,这对我来说是必不可少的工具。我是一名开发人员,在拥有的每台计算机上,首先要安装XFind程序。它创建于1997年,到目前为止,它的版本是1.0,并且到目前为止,它是最好的。通常,我需要在" .cs","。aspx","。sct"(Visual FoxPro表单代码文件)或仅"。*"中搜索一些字符串,XFind会扫描所有文件并向我显示文件,而另一个很棒的事情是您可以查看字符串在文件中的位置。 XFind也具有某种编辑器。如果是二进制文件,它将显示找到的字符串。如果您像我这样的开发人员,请尝试并永久使用它。
尽管从技术上讲不是grep或命令行,但Microsoft Visual Studio和Notepad ++都具有很好的"在文件中查找"功能,并具有完整的正则表达式支持。我发现自己经常使用它们,即使我在命令行上也可以使用grep的CygWin版本。
如果需要GUI,Bare Grep很不错。 Gnu grep适用于CLI
如果必须使用裸机Windows,则除了上面提到的Powershell选项外,还可以使用VBScript,它具有不错的RegEx支持。
MS在Technet上还有一个不错的脚本编写区域,其中包含大量管理员示例。
如果您不介意付费产品,PowerGREP是我个人的最爱。
我们最近使用PowerGREP对数千个文件进行了一些相当高级的批量操作。包括在PDF文件的内容中进行正则表达式搜索,以及大规模更改PDF文档。
如果您想节省人工劳动的时间,那就值得了。您可以在购买之前尝试一下,我认为。
只需尝试LikeGrep Java实用程序。
它在很多情况下都可以为您提供帮助。
如您所愿,它也可以替换文件中的某些文本。
它保证了对大文件的工作(已测试高达8 Gb)
自从我使用它们已经有一段时间了,但是Borland(现在是Embarcadero)在其C / C ++编译器中包含了命令行grep。注册一段时间后,他们已经可以免费下载其5.5版本。
TL; DR:ripgrep
自2009年以来,发生了很多事情。 Rust提供了许多CLI实用程序,其中包括ripgrep。它被宣传为用于正则表达式模式的递归搜索目录,支持Windows,MacOSX和Linux。
很快用类似的工具看一下这种性能比较。它还对工具的设计有很多解释。内容丰富且令人讨厌。 =)
支持POSIX grep工具支持的多种功能。在这里查看ack作者的比较。
如果您有Scoop,则可以使用
Oak Road Systems有一个商业grep实用程序。
我推荐PowerGrep
几年前,我不得不做一个电子发现项目。我发现
该脚本必须使用几十个搜索词/短语来搜索数千个文件。
Cygwin的grep效果更好,它并不经常出现阻塞,但是最终我去了PowerGrep,因为图形界面使它更容易分辨何时何地崩溃,而且在所有条件和输出中都非常容易编辑我想了。最终,PowerGrep是三者中最可靠的。
我知道这是一个有点老的话题,但是,这是您可以做的另一件事。我在无法访问互联网且可用磁盘空间非常有限的开发人员VM上工作,因此我使用了安装在其上的Java。
编译将正则表达式匹配项打印到控制台的小型Java程序。将jar放在系统上的某个位置,创建一个批处理执行该批处理,然后将该文件夹添加到PATH变量中:
JGrep.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | package com.jgrep; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class JGrep { public static void main(String[] args) throws FileNotFoundException, IOException { int printGroup = -1; if (args.length < 2) { System.out.println("Invalid arguments. Usage:"); System.out.println("jgrep [...-MODIFIERS] [PATTERN] [FILENAME]"); System.out.println("Available modifiers:"); System.out.println(" -printGroup - will print the given group only instead of the whole match. Eg: -printGroup=1"); System.out.println("Current arguments:"); for (int i = 0; i < args.length; i++) { System.out.println("args[" + i +"]=" + args[i]); } return; } Pattern pattern = null; String filename = args[args.length - 1]; String patternArg = args[args.length - 2]; pattern = Pattern.compile(patternArg); int argCount = 2; while (args.length - argCount - 1 >= 0) { String arg = args[args.length - argCount - 1]; argCount++; if (arg.startsWith("-printGroup=")) { printGroup = Integer.parseInt(arg.substring("-printGroup=".length())); } } StringBuilder sb = new StringBuilder(); try (BufferedReader br = new BufferedReader(new FileReader(filename))) { sb = new StringBuilder(); String line = br.readLine(); while (line != null) { sb.append(line); sb.append(System.lineSeparator()); line = br.readLine(); } } Matcher matcher = pattern.matcher(sb.toString()); int matchesCount = 0; while (matcher.find()) { if (printGroup > 0) { System.out.println(matcher.group(printGroup)); } else { System.out.println(matcher.group()); } matchesCount++; } System.out.println("----------------------------------------"); System.out.println("File:" + filename); System.out.println("Pattern:" + pattern.pattern()); System.out.println("PrintGroup:" + printGroup); System.out.println("Matches:" + matchesCount); } } |
c:\ jgrep \ jgrep.bat(与jgrep.jar一起):
1 2 | @echo off java -cp c:\\jgrep\\jgrep.jar com.jgrep.JGrep %* |
并在PATH环境变量的末尾添加c:\ jgrep。
现在,只需从任何地方调用
我需要从表达式中打印一些特定的组,所以我添加了一个修饰符并将其命名为
我意识到这是一个老问题,但我偶然发现了此帖子以寻求答案。我发现了一个,所以在这里添加它以存储集体的互联网记忆
Powershell:选择字符串
模块:
Microsoft.PowerShell。实用程序
https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.utility/select-string
以及内容丰富的博客文章和高级示例:"如何在PowerShell中" grep"
https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
该博客文章中的一个简单示例:
猫package.json |选择字符串-模式webpack
ls ./src/components/ |选择字符串模式视图
C:> cat post.md |选择字符串-模式" ^ \ w *:"
使用Cygwin ...
它具有32位和64位版本
而且在Windows 2000(*)上也能正常工作
到Windows 10或Server 2019
我使用Cygwin很久了...
最近尝试用Windows-Linux-Subsystems代替...
不是很长...
我很快又回到了Cygwin ...
更加灵活,可控制和丰富...
也少打扰...
只需将\ bin添加到路径...
您可以在Windows / Batch / Powershell中使用任何软件...
或DOS盒中...或Powershell盒中...
你也可以安装很多很棒的软件包
确实有效...像nginX或PHP ...
我什至在IIS中使用Cygwin PHP软件包...
作为奖励,您还可以从bash shell中使用它。
(我认为这是最初的意图;-)
可能是一切?它支持正则表达式,并且也具有控制台实用程序。
如上所述,gnuwin32项目具有grep的Windows CLI版本。
如果您想要带有图形界面的东西,我建议使用(开源)工具AstroGrep。