Sus*_*ton 5 powershell file-get-contents
我在加载到数据仓库之前进行了一些文件清理,并遇到了文件大小调整问题:
(Get-Content -path C:\Workspace\workfile\myfile.txt -Raw) -replace '\\"', '"' | Set-Content C:\Workspace\workfile\myfileCLEAN.txt
Run Code Online (Sandbox Code Playgroud)
我的文件大约有2GB。我收到以下错误,但不知道如何纠正。
Get-Content:抛出“System.OutOfMemoryException”类型的异常,........
我不是编码员,但我确实喜欢学习,所以正在构建自己的数据仓库。因此,如果您确实做出回应,请记住我的经验水平:)
逐行读取文本文件(无需将整个文件加载到内存中)的一种高效方法switch是使用带有参数的语句-File。
编写文本文件的一种高效方法是使用实System.IO.StreamWriter例。
正如马蒂亚斯在他的回答中指出的那样,由于正则表达式的转义规则,逐字地使用\"基于正则表达式的运算符实际上替换了alone 。虽然您可以使用 来解决这个问题,但在这种情况下,更简单且性能更好的替代方法是使用类型的方法,该方法对文字子字符串进行操作。-replace" '\\"'[string]Replace()
把它们放在一起:
# Note: Be sure to use a *full* path, because .NET's working dir. usually
# differs from PowerShell's.
$streamWriter = [System.IO.StreamWriter]::new('C:\Workspace\workfile\myfileCLEAN.txt')
switch -File C:\Workspace\workfile\myfile.txt {
default { $streamWriter.WriteLine($_.Replace('\"', '"')) }
}
$streamWriter.Close()
Run Code Online (Sandbox Code Playgroud)
注意:如果您使用旧版本的 Windows PowerShell(即版本 4 或更低版本),请
New-Object System.IO.StreamWriter 'C:\Workspace\workfile\myfileCLEAN.txt'
使用
[System.IO.StreamWriter]::new('C:\Workspace\workfile\myfileCLEAN.txt')
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |