Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell将CSV中的单行转换为多行_Powershell - Fatal编程技术网

使用PowerShell将CSV中的单行转换为多行

使用PowerShell将CSV中的单行转换为多行,powershell,Powershell,我有一个CSV文件,有两列和多行。我附上了用于测试的CSV文件的内容,其中2列30行包含2人的数据。但在实际应用中,行数会随着测试次数的增加而增加。因此,在实际应用中,维度将是两列和(15乘以N)行,其中N是人数 我需要输出为N+1(标题)行和15列(参数)。有人能帮我用Powershell转换程序吗 我取了两个读数进行测试。在应用程序中,读数的数量不确定 我要转换的输入文本文件。参数和相应的值用逗号分隔 Name,Test Age,18 Gender,Male Time 1,379 Time

我有一个CSV文件,有两列和多行。我附上了用于测试的CSV文件的内容,其中2列30行包含2人的数据。但在实际应用中,行数会随着测试次数的增加而增加。因此,在实际应用中,维度将是两列和(15乘以N)行,其中N是人数

我需要输出为N+1(标题)行和15列(参数)。有人能帮我用Powershell转换程序吗

我取了两个读数进行测试。在应用程序中,读数的数量不确定

我要转换的输入文本文件。参数和相应的值用逗号分隔

Name,Test
Age,18
Gender,Male
Time 1,379
Time 2,290
Time 3,305
Time 4,290
Time 5,319
Time 6,340
Time 7,436
Time 8,263
Time 9,290
Time 10,381
Responses,0
Average Reaction Time,329
Name,Test
Age,18
Gender,Male
Time 1,365
Time 2,340
Time 3,254
Time 4,270
Time 5,249
Time 6,350
Time 7,309
Time 8,527
Time 9,356
Time 10,407
Responses,1
Reaction Time,375
我的用于分隔逗号和转置列和行的代码段

import-csv $file -delimiter "," | export-csv $outfile
(gc $outfile | select -Skip 1) | sc $outfile
$filedata = import-csv $outfile -Header Parameter , Value   
$filedata | export-csv $outfile -NoTypeInformation

$Csv = import-csv $outfile
$Rows = @()
$Rows += $csv.Parameter -join ","
$Rows += $Csv.Value -join ","
Get-Process | Tee-Object -Variable ExportMe | Format-Table
$Rows | Set-Content $outfile
这是我当前的CSV文件

Name,Age,Gender,Time 1,Time 2,Time 3,Time 4,Time 5,Time 6,Time 7,Time 8,Time 9,Time 10,Responses,Average Time,Name,Age,Gender,Time 1,Time 2,Time 3,Time 4,Time 5,Time 6,Time 7,Time 8,Time 9,Time 10,Responses,Average Time
Test,18,Male,379,290,305,290,319,340,436,263,290,381,0,329,Test,18,Male,365,340,254,270,249,350,309,527,356,407,1,375
我期待像这样的输出CSV

Name,Age,Gender,Time 1,Time 2,Time 3,Time 4,Time 5,Time 6,Time 7,Time 8,Time 9,Time 10,Responses,Average Time   
Test,18,Male,379,290,305,290,319,340,436,263,290,381,0,329
Test,18,Male,365,340,254,270,249,350,309,527,356,407,1,375
我还附上了我的实际和收到的输出快照

提前感谢

我强烈建议不要手动格式化CSV

如果您知道每个人总有15行属性,您可以执行嵌套循环来“切碎”您的csv:

#导入原始csv
$rows=导入Csv$文件-标题名称、值
#外环每次增加15(一人的跨度)
$objects=for($i=0;$i-lt$rows.Count;$i+=15){
#准备一个有序的字典来保存属性
$props=[ordered]@{}
#从偏移量到偏移量+14生成一个内环
$i..$i+14)|%{
#把每一行抄写到我们的字典上
$props[$rows[$\].Name]=$rows[$\].Value
}
#把我们的字典放到一个对象上
[pscustomobject]$props
}
#转换回csv
$objects |导出Csv$outfile-notype信息

请将您遇到问题的代码以及数据和预期输出以文本而不是图像的形式发布:)很抱歉Mathias太乱了。我不熟悉堆栈溢出。我也编辑了同样的内容。我已将块代码与当前CSV文件和预期的CSV文件一起作为文本插入。关于代码片段,我已经尝试过了,但似乎没有任何效果。我对Powershell很陌生。别担心,有时候我们都是新手:)当然,伙计。谢谢。