本帖最后由 yhcfsr 于 2018-11-26 12:12 编辑
我也来套Powershell- <#
- 时间相同的数据必须要有8组且相邻,否则结果会混乱;
- 使用环境:仅限WIN10,WIN7(没使用过PS脚本的,自行百度食用方法)
- #>
- $content=[System.IO.File]::ReadAllLines('.\ref.txt',[text.encoding]::Default);
- <#变量初始化#>
- $count=$content.count;
- [System.Collections.ArrayList] $Result=@();
- $array=@{};
- $arr=@{};
- $lastTime=$i=0;
-
- do
- {
- if(($i -ne 0) -and ($array.Count -eq 9)){
- $Result+= New-Object psobject -Property @{
- data1=$array.item('"data1"');
- data2=$array.item('"data2"');
- data3=$array.item('"data3"');
- data4=$array.item('"data4"');
- data5=$array.item('"data5"');
- data6=$array.item('"data6"');
- data7=$array.item('"data7"');
- data8=$array.item('"data8"');
- time =$array.item("time") ;
- }
- $array.Clear();#清空上一组数据
-
- }
- if($i -eq $count){break;} #扫描完所有行后,退出循环
- $line=$content[$i++] -split '\s{8}';#分割数据
- if($line[0] -notmatch 'data\d+'){continue;}#非data数据行,跳过
- $line[2]=[int]$line[2];#去小数点
- <#将时间相同的数据保存为一个数组#>
- if($lastTime -ne $line[1] ){$lastTime = $line[1];$array.Add("time",($line[1] -replace '^"(.*):\d+"$','$1'));$array.Add($line[0],$line[2]);}
- else{$array.Add($line[0],$line[2]);}
-
- }while($i -lt $count);
- <#输出到CSV文件#>
- $Result|Select-Object data1,data2,data3,data4,data5,data6,data7,data8,time|Export-Csv .\ref.csv -NoTypeInformation
复制代码
|