如何从 PowerShell grep 搜索文本

x33g5p2x  于2022-08-17 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(808)

grep 是 Linux 上功能强大的文本搜索实用程序,但在 Windows 上不可用。虽然有第三方端口和解决方案,但 PowerShell 提供了内置的等价物grep ,可以在您的脚本中完成相同的工作。

在 PowerShell 中使用 findstr 进行 grep 搜索

PowerShell 中有几个不同的搜索实用程序,每个都有自己的优势。最简单的是findstr,它是本机 Windows 可执行文件。这可以很好地替换 grep 在命令行中进行简单的搜索操作。例如,您可以通过管道将其输出ls 以查找匹配项。

ls | findstr "foo"

您还可以一次搜索多个单词,使用通配符匹配任何内容,并使用/R 标志传递基本的正则表达式。

ls | findstr /R ba[az]\.txt

但是,如果要显式搜索包括空格,则需要使用该/C: 标志:

ls | findstr /C:"foo"

如果你习惯了 Linux 命令行,不想记住新命令,可以将“grep”配置为 的别名findstr,这样可以保持肌肉记忆。

new-alias grep findstr

在 PowerShell 中使用 Select-String 进行 grep 搜索

PowerShell 提供的另一种本机方法是Select-String cmdlet,它的功能与findstr.

这意味着它将在 PowerShell 脚本中更好地工作,并且最值得注意的是将其输出作为对象返回,该对象可以由 PowerShell 漂亮地打印出来。它也更容易在命令行上使用,因为 PowerShell 的选项卡补全将与它一起使用。

它的工作原理与 , 一样findstr,也可以使用通配符和正则表达式。

ls | Select-String foo
ls | Select-String -Pattern <regexPattern>

您可以通过Select-String 向其传递参数来使用 grep 文件内的文本-Path 。您还可以将它与从其他 cmdlet(如Get-Content.

Select-String -Path ".\foo.txt" -Pattern ba.*

如果您想在命令行中使用它,也可以将其别名为“grep”以便快速访问。

remove-alias grep
new-alias grep Select-String

相关文章