我正在尝试使用PowerShell遍历CSV文件的每一行,以根据分隔符(;)将行中的特定单元格分成多行。我的数据看起来像这样:
ID Name Invoices Member Since
1 John A123;A234;C316 1999
2 Dave B219;C216 2010
3 Jim D213;E117;G214 2003
我需要输出看起来像这样:
ID Name Invoices Member Since
1 John A123 1999
1 John A234 1999
1 John C316 1999
2 Dave B219 2010
2 Dave C216 2010
3 Jim D213 2003
3 Jim E117 2003
3 Jim G214 2003
最后,最后,我需要将此文件导出到新的CSV文件。任何帮助将不胜感激。我已经研究了几个小时,在寻找如何做到这一点的资源方面遇到了很多困难。在此先感谢您的帮助。
答案 0 :(得分:0)
只需迭代每一行,检索Invoices
,将其拆分为;
,然后使用当前值为每个行创建一个新的PSCustomObject
:
$x = Get-Content 'Path_to_your_csv'
$y = $x | ConvertFrom-Csv -Delimiter ' '
$y | Foreach {
$current = $_
$current.Invoices -split ';' | foreach {
[PSCUstomObject]@{
ID = $current.ID
Name = $current.Name
Invoices = $_
Member = $current.Member
Since = $current.Since
}
}
} | ConvertTo-Csv -NoTypeInformation -Delimiter ' ' | % {$_ -replace '"',''}
<强>输出:强>
ID Name Invoices Member Since
1 John A123 1999
1 John A234 1999
1 John C316 1999
2 Dave B219 2010
2 Dave C216 2010
3 Jim D213 2003
3 Jim E117 2003
3 Jim G214 2003
注意:您可能希望采用分隔符(例如使用Tabs)...