使用PowerShell编辑CSV文件

时间:2013-12-27 21:54:18

标签: powershell csv

我需要在下面使用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 ',' 

2 个答案:

答案 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的。