我正在尝试从我的 PowerShell 脚本中的 CSV 文件输出数据(RUSH 的歌曲和专辑列表),并且我按照我需要的方式对数据进行了排序,但我不知道如何格式化它我需要的方式。以下是我的代码当前的编写方式:
$output = Import-CSV $DatabasePath -Delimiter "`t" | Sort-Object @{Expression= 'Year'; Descending = $true}, @{Expression='Song'; Ascending=$true}
#$output
$output | ForEach-Object {
Write-Host "$_.Album "($_.Year)" "`n""
Write-Host "$tab $_.Song"
这就是它的输出方式:
@{Song=The Story so Far; Album=R40 Live; Year=2015; Notes=Drum solo; interlude during Cygnus X-1}.Song
@{Song=Drumbastica; Album=Clockwork Angels Tour; Year=2013; Notes=Drum solo; interlude during Headlong Flight}.Album 2013
@{Song=Drumbastica; Album=Clockwork Angels Tour; Year=2013; Notes=Drum solo; interlude during Headlong Flight}.Song
@{Song=Here It Is!; Album=Clockwork Angels Tour; Year=2013; Notes=Drum solo}.Album 2013
@{Song=Here It Is!; Album=Clockwork Angels Tour; Year=2013; Notes=Drum solo}.Song
@{Song=Peke's Repose; Album=Clockwork Angels Tour; Year=2013; Notes=Guitar solo; lead-in to Halo Effect}.Album 2013
我需要输出显示如下:
R40 Live (2015)
The Story so Far
Clockwork Angels Tour (2013)
Drumbastica
Here It Is!
Peke's Repose
The Percussor
Clockwork Angels (2012)
BU2B
...
(注意:请忽略上面示例中的颜色。)在使用循环从 CSV 文件中获取数据后,我要做的是在第一行的括号中显示专辑名称和年份,然后是所有与该专辑有关的歌曲在专辑名称后面的行中按字母顺序排列。我怎样才能做到这一点?
编辑:按照@BrettFord1999 的建议,我得到的输出显示如下:
R40 Live (2015)
The Story so Far
Clockwork Angels Tour (2013)
Drumbastica
Clockwork Angels Tour (2013)
Here It Is!
Clockwork Angels Tour (2013)
Peke's Repose
Clockwork Angels Tour (2013)
The Percussor
Clockwork Angels (2012)
BU2B
但是,我只想显示专辑一次而不是多次。有没有办法将每个专辑名称显示一次,而不是与它链接的每首歌曲一起显示?
我会提供原始文件,但我不知道如何在这里分享。我还是 StackOverflow 的新手。