Powershell中的OR运算符在Select-string中的应用

4

在PowerShell中,有一种方法可以放置多个搜索模式吗?例如下面的命令,我想搜索那些包含ASA或TMP字符串的内容。但它不起作用。搜索应该匹配为单个单词示例:ASA是真实的,但TIASAP是假的。

Get-ChildItem E:\Test\Workflow -Exclude *.bak -Recurse | Select-String -pattern "ASA" -or "TMP" -SimpleMatch | Where-Object LineNumber -le 50 | group path | select name 
2个回答

7

如果省略了-SimpleMatch开关,Select-String命令将使用regex,因此您只需搜索ASA|TMP

Get-ChildItem E:\Test\Workflow -Exclude *.bak -Recurse | Select-String -pattern "ASA|TMP" | Where-Object LineNumber -le 50 | group path | select name 

如何将单词匹配为一个整体?例如,ASA是正确的,但YIASAO是错误的。 - user664481
你可以使用单词边界\B:所以你的模式应该像这样:\bASA\b|\bTMP\b - Martin Brandl

2

只需将要匹配的字符串列表传递给“-Pattern”参数。

例如,要搜索所有ps1文件中的单词functioncheck,请执行以下操作:

Get-ChildItem *.ps1 | Select-String -Pattern function,check

这将使您的示例变成:
Get-ChildItem E:\Test\Workflow -Exclude *.bak -Recurse | Select-String -pattern ASA,TMP -SimpleMatch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接