首页 > 解决方案 > 使用 powershell 处理海量数据文件

问题描述

我正在尝试对 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)]","?"

系统详情

在此处输入图像描述

标签: powershellexceptionmemoryhigh-volume

解决方案


下面是带有流的示例解决方案。它逐行读取文件,然后将更新的行添加到新文件中。

$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()

推荐阅读