需要一种在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' {...}


以上是需要一种在Poweshell中找到字符串后写入文件剩余数据的方法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>