PowerShell grep
每当你需要扫描字符串或整个文本文件中的内容时,你会在哪里开发 PowerShell 代码?如果你经常使用 Linux,那么你应该熟悉流行的 grep 实用程序。grep 实用程序允许用户使用各种参数查找文本;但是,它在 Windows 中不可用。因此,在这种情况下,我们在 PowerShell 中有 Select-String cmdlet。
Select-String
cmdlet
Select-String 默认检查每行中的初始匹配,然后显示属于匹配行的行号、文件名和文本。Select-String 还可以通过使用字节顺序标记 (BOM) 确定编码类型来处理多种文件编码,例如 Unicode 文本。如果缺少 BOM,Select-String 将假定它是一个 UTF8 文件。
Select-String
cmdlet 的一些用法解释如下。
使用 PowerShell 的典型 Grep 任务
让我们从一个例子开始。假设我们有一个包含名称和地址的字符串,而且该字符串是非结构化的。我们要提取名称。那么我们将如何做到这一点将在下面解释。
||Sara Peiris|| 37, De silva road, Panadura
--||Tim Gangster||-- 345, Yolks street,KL
==|Suz Maker|== 44 Main, Cydney, CA
上面的文本分配给 users
变量。因此,尝试将使用模式
参数搜索名称。
test | Select-String -Pattern 'Sara Peiris'
输出:
在这里,我们可以理解 Select-String 方法有效,但由于我们传递了整个字符串,因此没有返回指定的方法。因此,让我们尝试通过使用换行符换行来传递单行,因为每个特定条目都在单行中给出
PS> test = test -split "`n"
PS> test | Select-String -Pattern 'Sara Peiris'
输出:
在这里我们可以看到它返回一行。接下来,我们应该研究一种可以返回多行的方法。
使用 PowerShell Select-String 查找模式
在这里,我们需要找到对所有行都有效的通用模式。所以如果我们看前面的例子,你可以看到所有的名字都被|
包围了并且名称用空格分隔。所以现在,让我们使用正则表达式采用这种模式,并使用模式
参数发送它。
Select-String
已使用正则表达式检索每一行;在那之后,我将不得不分开所有的名字。我现在不需要每个地址。我们将使用 Select-String 返回的每个匹配对象的 Matches
属性来完成此操作。
PS> test | Select-String -Pattern '\|\w+ \w+\|' | foreach {$_.Matches}
输出:
现在你可以看到 Value 属性具有我们需要的名称,但它们仍被 |
包围特点。那是因为正则表达式匹配包括|
名称中的字符。
管道字符仍必须包含在过滤器中,但我们不希望它们作为匹配项返回。正则表达式组是一种方法。你要返回的结果用括号括起来,表示正则表达式组。在这种情况下,我将通过将表示名字和姓氏的正则表达式字符串括起来再试一次。
PS> test | Select-String -Pattern '\|(\w+ \w+)\|' | foreach {$_.Matches}
输出:
|
字符显示在值中,但是我们可以看到该组已变为 {0,1}
,这意味着 Select-String 已识别该组。
我将在每个循环的 for
中重新插入引用以查看该组。因为每个组属性都是一个数组,我们可以通过将第一个成员括在括号中然后使用 Value 属性来引用它。
PS> test | Select-String -Pattern '\|(\w+ \w+)\|' | foreach {$_.Matches.Groups[1].Value}
输出:
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。