在这个答案的两个例子中,你都可以使用正则表达式而不是拆分,这样会更有效。有关正则表达式的详细信息,您可以查看:
https://regex101.com/r/iGfHWp/1
.
-
如果您可以一次读取所有文件内容,那么您可以执行以下操作:
(Get-Content myfile.txt -Raw) -replace '(?m)^.+?:' |
Set-Content newfile.txt
-
如果你不能一次读取所有文件内容,需要尽可能低的内存使用率,但仍然保持高效,那么我建议
File.ReadLines
+
StreamWriter
:
try {
# use absolute path always in this case, i.e.:
# `newfile.txt` should be `X:\path\to\newfile.txt`
$writer = [System.IO.StreamWriter] 'newfile.txt'
$re = [regex]::new(
'^.+?:', [System.Text.RegularExpressions.RegexOptions]::Compiled)
foreach ($line in [System.IO.File]::ReadLines('myfile.txt')) {
$writer.WriteLine($re.Replace($line, ''))
}
}
finally {
if ($writer) {
$writer.Dispose()
}
}