我有必要通過大型管道分隔的文件解析來算,其第5列符合,不符合我的標準的記錄數。需要幫助改善PowerShell中分隔的文本解析腳本的執行
PS C:\temp> gc .\items.txt -readcount 1000 | `
? { $_ -notlike "HEAD" } | `
% { foreach ($s in $_) { $s.split("|")[4] } } | `
group -property {$_ -ge 256} -noelement | `
ft –autosize
此命令我想要做什麼,這樣返回的輸出:
Count Name ----- ---- 1129339 True 2013703 False
然而,對於一個500 MB的測試文件,這個命令需要約5.5鍾如通過測量命令測量運行。一個典型的文件超過2GB,等待20分鐘以上的時間不合需要很長。
你看到的方式,以提高該命令的性能?
例如,有沒有辦法來確定獲取內容的ReadCount最佳值?沒有它,完成相同的文件需要8.8分鐘。
您是否試過StreamReader?我認爲Get-Content會在完成任何事情之前將整個文件加載到內存中。 – Gisli 2012-01-17 21:52:25
你的意思是通過導入System.IO? – neontapir 2012-01-17 21:59:23
是的,如果可以的話,請使用.net框架。我曾經習慣讀取SQL Server生成的大型日誌文件,結果良好。我不知道PowerShell中有任何其他方式來有效地讀取大文件,但我不是專家。 – Gisli 2012-01-17 22:08:59