我正在尝试编写一个powershell cmdlet来查找文件中的多个单词。例。我需要解析" word1"," word2"," word3"在文件的同一行。我做错了,因为我试过这个没有成功:
(gci -File -Filter FileName | Select-String -SimpleMatch word1, word2,word3) > outputFileName.txt
其中FileName =文件名,outputFileName =从我搜索的三个单词生成的文件。谢谢。
答案 0 :(得分:0)
Select-String没有我能想到的任何组合运算符。如果你的话总是按照这个顺序排列,那么你可以-Pattern 'word1.*word2.*word3'
作为你的匹配,但是如果它们可以按任何顺序变得非常复杂。相反,我会看看
.. | Select-String 'word1' | Select-String 'word2' | Select-String 'Word3'
所以,所有与word1匹配的行。其中,那些匹配word2的地方。除了那个更小的结果,那些也匹配word3。
答案 1 :(得分:0)
试试这个:
$wordlist=@("word1", "word2", "word3")
Get-ChildItem "c:\temp\" -file | %{$currentfile=$_.FullName; Get-Content $_.FullName |
%{
$founded=$true
foreach ($item in $wordlist)
{
if (!$_.Contains($item))
{
$founded=$false
break
}
}
if ($founded)
{
$currentfile
}
}
}