Фильтровать строки по словам по powershell - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу отфильтровать строки по конкретному слову из файла в powershell.

Например: файлы animal1.txt и animal2.txt.Каждый файл содержит строки

dog
cat
dog
dog
bird

Затем я хочу создать два производных файла: animal1_bak.txt, в котором хранятся строки, содержащие слово «собака» из animal1.txt

animal2_bak.txt, в котором хранятсястроки, которые содержат слово «собака» из animal2.txt

В Интернете я нашел следующее:

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

Но инструкция по созданию производного слова отсутствует.

Что я могу сделать?

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

попробуй Нечто подобное

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 
}
0 голосов
/ 01 октября 2018
$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
        }
    }
}
0 голосов
/ 29 сентября 2018

Вы можете сначала получить контент и использовать набор контента, как показано ниже

Get-Content -Path E:\KTDocs\Scripts\animal1.txt |  where {
 $_ -like  '*dog*'} |Set-Content e:\animalbak.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...