我正在尝试对4GB的数据文件执行替换操作。 但是由于内存异常,我什至无法读取该文件。 以下命令显示内存错误。
$edwfile = (Get-Content C:\Users\tomgeorg\Desktop\edw_ord_extr_3x_SIQP_20181021.182305\edw_ord_extr_3x_SIQP_20181021.182305.dat -Raw )
是否有其他替代命令或技巧来处理大文件。
我想在文件的每一行上运行以下替换模式。基本上我想删除所有不需要的特殊字符。
-replace "[$([char]0x00)-$([char]0x09)$([char]0x0B)-$([char]0x1F)$([char]0x7F)-$([char]0xFF)]","?"
系统详细信息
答案 0 :(得分:2)
假设您希望一次只工作一行,那么您将需要使用管道来完成任务:
$path = '~\Desktop\edw_ord_extr_3x_SIQP_20181021.182305\edw_ord_extr_3x_SIQP_20181021.182305.dat'
Get-Content -Path $path | ForEach-Object {
# do something line-by-line with the file
} | # -> do something else with the output
在不知道做什么的情况下,很难给出更完整的答案。
答案 1 :(得分:2)
下面是带有流的样品溶液。它逐行读取文件,然后将更新的行添加到新文件。
$reader = [System.IO.StreamReader]"C:\temp\OriginalFile.txt"
$writer = [System.IO.StreamWriter]"C:\temp\UpdatedFile.txt"
while (!$reader.EndOfStream) {
$writer.WriteLine(($reader.ReadLine() -replace '\|', ";"))
}
$reader.Close()
$writer.Close()