Powershell,csv匹配行和列以修改另一列

时间:2019-10-30 15:51:40

标签: powershell csv

我的问题很简单,我有一个csv文件,其格式如下:

Client   Status       Goal       Project
A         Done         Done       Waiting
B         Finished     Done       Cancelled
C                      Waiting    Finished
D         Done         Done       Done

现在,我的问题很简单,例如,我想更新与客户“ B”匹配的“目标”列上的值

我知道我可以执行import-csv并使用计算的属性来修改一列,但我不知道如何修改与另一列中的另一行匹配的列中的特定行。例如,我想将“等待中”更改为已完成的客户端C,或者将“取消中”更改为“等待中的客户端B”。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

$csv = Import-Csv 'D:\clientprojects.csv'
($csv | Where-Object {$_.Client -eq 'C'}).Goal = 'Finished'
($csv | Where-Object {$_.Client -eq 'B'}).Project = 'Waiting'

#output on console
$csv

# write to new CSV file
$csv | Export-Csv -Path 'D:\clientprojects-updated.csv' -NoTypeInformation

控制台上的输出:

Client Status   Goal     Project 
------ ------   ----     ------- 
A      Done     Done     Waiting 
B      Finished Done     Waiting 
C               Finished Finished
D      Done     Done     Done