如何将一列(多行)转换为多列?

时间:2017-09-13 06:16:38

标签: powershell

我有一个包含以下内容的文件:

0
ABC
1
181.12
2
05/07/16
3
1002
4
1211511108
6
1902
7
1902
10
hello
-1
0
ABC
1
1333.21
2
02/02/16
3
1294
4
1202514258
6
1294
7
1294
10
HAI
-1
...

我想转置上面的文件内容,如下所示。 ' -1'在上面的列表中是记录分隔符,它表示下一条记录的开始。

ABC,181.12,05/07/16,1002,1211511108,1902,1902,hello
ABC,1333.21,02/02/16,1294,1202514258,1294,1294,HAI
...

请告诉我如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

将文件作为单个字符串读取:

$txt = Get-Content 'C:\path\to\your.txt' | Out-String

将内容拆分为-1行:

$txt -split '(?m)^-1\r?\n'

在换行符处拆分每个块:

... | ForEach-Object {
    $arr = $_ -split '\r?\n'
}

选择奇数索引处的值(跳过数字行)并用逗号连接它们:

$indexes = 1..$($arr.Count - 1) | Where-Object { ($_ % 2) -ne 0 }
$arr[$indexes] -join ','