我想根据Powershell中文件中的特定单词过滤行。
例如:文件animal1.txt
和animal2.txt
。每个文件都包含行
dog
cat
dog
dog
bird
然后我要创建两个派生文件:
animal1_bak.txt
存储包含来自animal1.txt
animal2_bak.txt
存储行,其中包含来自animal2.txt
的单词'dog'
我在网上发现的是:
Select-String -Path "*.*" -Pattern "dog"
但是缺少创建派生词的指令。
我该怎么办?
答案 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
}
}
}