使用多个表解析CSV

时间:2017-09-01 06:24:35

标签: powershell csv

我有一个包含多个表的CSV文件,例如:

##List 1##
ID,Username,Department
1,John,HR
2,Barbara,Finance
3,Jane,IT

##List 2##
ID,Username,CostCentre
1,Alex,3241
2,Jamie,3342
3,James,1234
4,Sarah,5536

有没有一种简单的方法让Powershell将其识别为两个表?我目前正在逐行阅读并使用

if($row -Like "*List*") 

(以及其他一些逻辑)确定行的性质,然后将其写入两个文本文件之一,然后导入它们并再次迭代。

但是有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

这还没有完全解决,我相信有人会提出一些更优雅的东西,但它会被分解为一些步骤,所以它可能有助于解释一些PowerShell技术。

$s=@"
##List 1##
ID,Username,Department
1,John,HR
2,Barbara,Finance
3,Jane,IT

##List 2##
ID,Username,CostCentre
1,Alex,3241
2,Jamie,3342
3,James,1234
4,Sarah,5536
"@

# break into individual lines
$s2 = ( $s -split "`r`n" ) 

# strip out blank lines
$s3 = $s2 | ? { $_ -ne "" }

# re-assemble into text blob
$s4 = $s3 -join "`r`n"

# split at tokens and skip the first, blank record
$s5 = $s4 -split "##List \d+##" | Select-Object -Skip 1

# remove blanks
$s6 = $s5 | ? { $_ -ne "" }

$s6 | % {

    # break into array of lines
    $s7 = $_ -split "`r`n"

    # remove blank lines
    $s8 = $s7 | ? { $_ -ne "" }

    $s8 | ConvertFrom-Csv

}