powershell解析多个关键字并将输出发送到文本文件

时间:2017-04-20 16:09:38

标签: powershell cmdlet

我正在尝试编写一个powershell cmdlet来查找文件中的多个单词。例。我需要解析" word1"," word2"," word3"在文件的同一行。我做错了,因为我试过这个没有成功:

(gci -File -Filter FileName | Select-String -SimpleMatch word1, word2,word3) > outputFileName.txt

其中FileName =文件名,outputFileName =从我搜索的三个单词生成的文件。谢谢。

2 个答案:

答案 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
                        }


                    }
}