CSV 操作与电源外壳



我想使用 PowerShell 命令将 CSV 的 A 列的所有内容替换为当前日期MMddyyyy

在过去的几天里看了很多例子,但找不到正确的答案,对 powershell 来说有点陌生,拥有 35 年的 unix 背景!

我想要的结果将是一个新的 CSV 文件,其中日期在第 1 列中,然后是源 CSV 中的所有其他列。

MMddyyyy、所有、其他、字段、来自、原始、csv

假设您的数据位于名为 your.csv 的文件中,内容如下:

ColA,ColB,ColC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC
somethingA,somethingB,SomethingC

执行此操作的一种有效方法是遵循在"将列添加到CSV Windows PowerShell"中发布的解决方案。以下是该方法之后的详细信息,您要替换第一列并保持其余列的顺序:

Import-Csv your.csv | 
  Select-Object -Property @{n="ColA";e={get-date -f MMddyyyy}},* -ExcludeProperty ColA |
    Export-Csv new.csv -NoTypeInformation

效率较低的替代方法处理每一行并进行适当的更改。这将使用新数据更新原始$file变量,但将保持原始文件不变。new.csv 是包含所有更新的输出文件。

$file =  Import-Csv your.csv
Foreach ($row in $file) {
   $row.ColA = get-date -f MMddyyyy
}
$file | Export-Csv new.csv -NotypeInformation

现在,new.csv的内容如下:

"ColA","ColB","ColC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"
"04042019","somethingB","SomethingC"

最新更新