我有一个包含多个表的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*")
(以及其他一些逻辑)确定行的性质,然后将其写入两个文本文件之一,然后导入它们并再次迭代。
但是有更有效的方法吗?
答案 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
}