相当于 Windows 7 的 Grep?

chr*_*lee 273 windows-7 grep cmd.exe

是否有与 Windows 7 等效的命令提示符grep?也就是说,我想过滤掉一个命令的结果:

重击使用:

ls | grep root

从 Windows 命令提示符会是什么?

Gre*_*son 320

Findstr听起来像你想要的。我一直使用它作为 Windows 平台上的近似 grep 等效项。

另一个管道示例

C:\> dir /B | findstr /R /C:"[mp]"
Run Code Online (Sandbox Code Playgroud)

  • 为什么他们不能称之为grep! (29认同)
  • `/R` 和 `/C` 在这里代表什么? (9认同)
  • @VictorGrazi 他们一开始确实做到了,请参阅 [这篇文章](https://blogs.msdn.microsoft.com/oldnewthing/20121128-00/?p=5963/)。它最初被命名为 qgrep - 但后来被重命名。 (8认同)
  • `findstr` 的一个大问题是正则表达式模式可能不包含替代项。 (4认同)
  • `/B`:仅显示文件夹名称。 `/R`:将搜索字符串作为正则表达式处理。这是默认设置。 `/C`:使用指定的文本作为文字搜索字符串。 (2认同)

Jde*_*eBP 47

有几种可能:

  • 使用 Unixgrep命令的端口。有几种选择。经常提到的是GNUWin32cygwinunxutils。不太为人所知,但在某些方面更好的是SFUA 实用工具包中的工具,它们在基于 UNIX 的应用程序子系统中运行,该子系统随 Windows 7 Ultimate 版和 Windows Server 2008 R2 一起提供。(对于 Windows XP,可以下载并安装UNIX 版本 3.5 的服务。)这个工具包有大量的命令行 TUI 工具,从mvdu,通过 Korn 和 C shell,到perlawk. 它有 x86-64 和 IA64 版本以及 x86-32 版本。这些程序在 Windows 的原生适当 POSIX 环境中运行,而不是使用模拟器 DLL(例如cygwin1.dll)在 Win32 上分层。是的,该工具包有grep,以及其他大约 300 个。
  • 使用grep人们编写和发布的众多本机 Win32命令之一。 例如,Tim Charron 有一个经过修改的 GNU grep 的本地 Win32 版本。还有PowerGREPBare GrepgrepWinAstroGrepdnGrep,尽管这些都是 GUI 程序而不是 TUI 程序。
  • 使用提供的findfindstrgrep注意, 语法与 的语法不同,正则表达式功能也是如此。


ole*_*hri 27

如果允许使用PowerShell命令,请使用

PS C:\> Get-ChildItem | Select-String root
Run Code Online (Sandbox Code Playgroud)

或短

PS C:\> ls | sls root
Run Code Online (Sandbox Code Playgroud)

请注意,别名sls仅从 PowerShell 3.0 版开始定义。您可以添加别名以减少输入:

PS C:\> New-Alias sls Select-String
Run Code Online (Sandbox Code Playgroud)

要直接从 cmd 运行 PowerShell 命令,请使用

C:\>powershell -command "ls | select-string root"
Run Code Online (Sandbox Code Playgroud)

  • Grep,Powershell 方式。https://communary.net/2014/11/10/grep-the-powershell-way/ (4认同)

bar*_*lop 24

在您编写 MS-DOS 的早期版本中FIND,据我所知只有。但它是一个不再使用的古老操作系统。

在Windows NT命令提示符(如Win2K中,赢得XP及更高版本,所以如WIN7,win10),您可以使用findfindstr,如果你下载的GnuWin32然后grep

基本的区别是 findstr 有一些正则表达式支持。Grep 最好地支持正则表达式。

C:\>dir | find "abc"
C:\>dir | find /i "abc"
Run Code Online (Sandbox Code Playgroud)

find /?并向findstr /?您展示开关的作用。

Gnuwin32有“包”。如果您下载 GnuWin32,我建议您使用 coreutils 包来获取您熟悉的一系列基本有用的实用程序,但 grep 不在那个包中,它是它自己的包。

添加

我上次检查时 GnuWin32 的 grep 很旧。Cygwin 的 grep 是最新的。还要记住,许多人使用虚拟机而不是 *nix 命令的 Windows 端口。


par*_*oid 9

如果您更愿意使用grep,而不是findstr,那么UnxUtils 中只有一个.exe文件版本,因此它是可移植的,无需安装,也无需使用 Cygwin 之类的东西。

  • 老了有什么坏处?软件会老吗?所有新字节。 (6认同)
  • @Chris:没有安装。它只是一个由 `.exe` 文件组成的 `.zip` 文件。唯一的小缺点是版本略旧。 (3认同)
  • GnuWin32 还为 Windows 提供了 `grep`:http://gnuwin32.sourceforge.net/packages/grep.htm (3认同)
  • @userunknown 好吧,例如, unxutils sed 命令较旧,并且不支持 \d 例如 \d22 来指定引用。较旧的 wget 可能无法下载较新的 wget 会下载的页面,如果您寻求支持,他们可能会要求您获取最新的页面,因为这可以解决一些问题。一个非常老的 grep 无疑不会像当前的那样具有正则表达式支持的水平 (3认同)