需要一种在Poweshell中找到字符串后写入文件剩余数据的方法
我有一个大文件(250 Gb),我需要搜索一个字符串,一旦找到它,我需要从该行到文件末尾复制所有内容。示例文件:
Bird
Lion
Tiger
Jaguar
Frog
Snake
结果将是:
Jaguar
Frog
Snake
我是 PowerShell 的新手,并尝试了以下操作,但只找到字符串 Jaguar 并打印它,我还需要以下几行。
Get-Content -Path "C:Dumptest1.txt" |
Select-String 'Jaguar' |
Set-Content -Path "C:Dumptest2.txt"
回答
由于您说您的文件非常大(并且可能生成的文件也很大),我想我会使用 aswitch和 StreamWriter
$writer = [System.IO.StreamWriter]::new('C:Dumptest2.txt')
$foundMarker = $false
switch -Regex -File 'C:Dumptest1.txt' {
'bJaguarb' { $foundMarker = $true; $writer.WriteLine($_) }
default { if ($foundMarker) { $writer.WriteLine($_) } }
}
# clean up
$writer.Flush()
$writer.Dispose()
在b周围的关键字Jaguar使它成为“整个单词”搜索。
PS 如果需要匹配关键字区分大小写,在switchCaseSensitive中添加switch:switch -Regex -CaseSensitive -File 'C:Dumptest1.txt' {...}