通过powershell按单词过滤行

时间:2018-09-29 00:50:40

标签: powershell powershell-v2.0

我想根据Powershell中文件中的特定单词过滤行。

例如:文件animal1.txtanimal2.txt。每个文件都包含行

dog
cat
dog
dog
bird

然后我要创建两个派生文件: animal1_bak.txt存储包含来自animal1.txt

的单词“ dog”的行

animal2_bak.txt存储行,其中包含来自animal2.txt的单词'dog'

我在网上发现的是:

Select-String -Path "*.*" -Pattern "dog"

但是缺少创建派生词的指令。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

您可以先获取内容并使用set-content,如下所示

Get-Content -Path E:\KTDocs\Scripts\animal1.txt |  where {
 $_ -like  '*dog*'} |Set-Content e:\animalbak.txt

答案 1 :(得分:0)

尝试类似的东西

select-string -Path "c:\temp\animal*.txt" -Pattern "dog" | Group Path | %{
$FileName="{0}_bak.txt" -f $_.Name
$_.Group.Line | select -unique  | Out-File $FileName -Append 
}

答案 2 :(得分:0)

$folderpath = "D:\AnimalFolder" # your folder path here
$Allfiles = Get-ChildItem -Path $folderpath -Recurse -File -Force -ErrorAction SilentlyContinue |where{$_.Name -match ".txt"} |Select-Object -expandproperty FullName
foreach($filepath in $allfiles)
{
    $Data = get-content $filepath
    foreach($line in $data)
    {
        if($line -match "dog")
        {
            $newpath = $filepath.split('.')[0]
            $getfullpath = $newpath + "_bak.txt"
            $line | out-file $getfullpath -append
        }
    }
}