我有一个非常大的日志文件。它包含多个日期的日志数据。每行以日期开头(yyyy-dd-mm hh:mm:ss等)。
所以,日志看起来像这样:
2016-02-17 10:15:24 some text that follows
2016-02-17 14:21:46 more text that follows
2016-02-19 11:54:11 other text that follows
2016-02-19 16:37:21 more text that follows
2016-02-19 19:52:17 other text that follows
2016-02-22 06:01:32 more text that follows
等...
我正在尝试编写一个PowerShell脚本:
targetfile-yyyy-mm-dd.log
我对此问题的第一次尝试是遍历文件中的整个日期范围,并针对每个日期从上到下解析整个文件。这需要多次遍历整个文件(40GB!),这需要数天。
我理想的解决方案是逐行浏览文件,并根据行中的前十个字符将每一行复制到相应的目标文件中。
我如何才能最有效率?谢谢你的想法!
答案 0 :(得分:1)
试试这个:
# Use StreamReader to read line by line the Log $file
$streamReader = New-Object System.IO.StreamReader -Arg "$file"
while($line = $streamReader.ReadLine()){
# Get the first 10 char to generate the $targetfile
$tagetfile = "target-file-$($line.Substring(0,10)).log"
# Add-Content of the $line value, skipping the first 20 char (Date)
$line.Substring(20) | Add-Content $tagetfile
}