如何在Windows中使用Powershell Grep或Select-String Cmdlet Grep文本文件?

null

Linux提供了grep工具,用于根据给定的字符串或正则表达式过滤文本数据或输出。这个工具在Linux系统管理员中很流行。另一方面,Windows操作系统通常缺乏这个工具以及Powershell的功能。Powershell提供 Select-String commandlet提供了Linux grep工具提供的类似特性和选项。在本教程中,我们将使用 Select-String 工具。

救命

帮助关于 Select-String 可以使用以下命令获取。

PS> get-help Select-String
Help
救命

文件中的搜索字符串

最简单的用法和最常用的特性之一就是简单地搜索文件中给定的字符串。我们将提供以下选项

  • -Pattern 指定要搜索的字符串

poet.txt 是我们搜索的文件。

PS> Select-String -Pattern EX .poet.txt
Search String In A File
文件中的搜索字符串

在多个文件中搜索字符串

在前面的示例中,我们在单个文件中搜索了给定的字符串,但实际问题远不止这些。我们可以通过提供带有帮助星号的文件名或扩展名来搜索多个文件中的字符串。在本例中,我们将通过指定 *.txt 文件名。

PS> Select-String -Pattern EX *.txt
Search String In Multiple Files
在多个文件中搜索字符串

递归搜索文件

现在最先进的文件规范是递归搜索文件。递归搜索将在所有当前文件夹和所有子文件夹中查找给定字符串。我们将提供 Get-ChildItem 命令以递归方式向 Select-String 命令 就像下面一样。

PS> Get-ChildItem c:*.txt -Recurse | Select-String -Pattern EX
Search Files Recursively
递归搜索文件

区分大小写的搜索

默认情况下,搜索给定字符串时不区分大小写。我们可以通过使用 -案件敏感 选项如下。

PS> Select-String -Pattern EX -CaseSensitive *.txt
Case Sensitive Search
区分大小写的搜索

匹配正则表达式

正则表达式提供定义更丰富和结构化的字符串表达式。 Select-String 命令还支持正则表达式。我们也可以将正则表达式提供到模式中。在这个例子中,我们将使用正则表达式 E.*E 匹配字符串。

PS> Select-String -Pattern "EX.*E" poet.txt
Match Regular Expression
匹配正则表达式

匹配整个单词

默认情况下,给定的搜索词或字符串被部分或全部搜索。如果我们需要匹配被空格包围的整个单词,我们应该在搜索词周围放置空格。我们会搜索的 case 搜索词作为一个完整的词。

PS> Select-String -Pattern " case " poet.txt
Match Whole Word
匹配整个单词

显示器 赛前N行

如果我们正在查找文本的某些部分,并且需要查看前面的匹配行,我们可以提供 -Context 选项,其中包含要打印的行数。

PS> Select-String -Pattern "case" -Context 2,0 poet.txt
Display N Lines Before Match
匹配前显示N行

匹配后显示N行

我们将使用 -Context 选项,但我们将提供后一部分行号。在本例中,我们将在匹配后打印3行。

PS> Select-String -Pattern "case" -Context 0,3 poet.txt
Display N Lines After Match
匹配后显示N行

匹配前后显示N行

现在我们将向 -Context 将提供行号前后的位置。在本例中,我们将在一次拍摄中打印匹配前的1行和匹配后的2行。

PS> Select-String -Pattern "case" -Context 1,2 poet.txt
Display N Line Before and After Match
显示匹配前后的N行

突出显示 比赛

在一个有大量匹配和文本的地方,寻找匹配特别困难。突出匹配将使工作更容易。

反转匹配或不匹配

另一个有用的功能是打印不匹配的行或反转匹配。这就像逻辑 NOT 操作。我们将使用 -NotMatch 显示不匹配行的选项。

PS> Select-String -Pattern "case" -NotMatch poet.txt
Invert Match or Not Match
反转匹配或不匹配

匹配项计数

我们可能需要数火柴。如果有很多匹配项,那么逐一计算它们是一项非常琐碎的任务。我们可以使用返回的匹配 count 属性打印匹配行的计数。

PS> $Result = Select-String -Pattern "case" -NotMatch poet.txtPS> $Result.count
Count Of Matches
匹配项计数

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享