我需要在下面使用PowerShell脚本执行。
我在CSV文件中有以下数据。我需要根据提供的主题在名称后附加另一个前缀
Name,Subject,Roll,Div
Mark,Agri,3,Div1,
Tom,CS,6,Div3,
Alex,Aero,9,Div6
假设我提供的主题为Agri
,名称的前缀应为P-
。因此,相同的CSV文件将被保存并具有低于内容的
Name,Subject,Roll,Div
P-Mark,Agri,3,Div1,
Tom,CS,6,Div3,
Alex,Aero,9,Div6
这是我到目前为止所拥有的:
(Import-Csv E:\Test.csv -Delimiter ',') | ForEach-Object{
if($_.Subject -match "Agri" )
{
$_ = "P-" + "$_";
}
else
{
$_ = "F-" + "$_";
}
} | Export-Csv E:\Test.csv -Delimiter ','
答案 0 :(得分:5)
我无法将它们组合在一起 - 可能只是对PowerShell语法无知。我能够使用以下两行来完成它:
($csv = Import-Csv E:\Test.csv -Delimiter ',') | ForEach {
if ($_.Subject -match "Agri") {
$_.Name = 'P-' + $_.Name
} else {
$_.Name = 'F-' + $_.Name
}
}
$csv | Export-Csv E:\Test.csv -Delimiter ',' -NoType
注意:
$_ = "P-" + $_;
变为
$_.Name = "P-" + $_.Name;
答案 1 :(得分:2)
在我看来,在下面的条款中使用了paren。
($csv = Import-Csv E:\Test.csv -Delimiter ',')
将$csv
的{{1}}输出分配给ForEach处理,因此ForEach效果完全丢失。不确定
你的目的是使用那些paren的。