【问题标题】:CSV Manipulation with powershell使用 powershell 进行 CSV 操作
【发布时间】:2019-08-26 08:29:36
【问题描述】:

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

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

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

MMddyyyy, all, other, fields, from, original, csv

【问题讨论】:

标签: powershell


【解决方案1】:

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

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

执行此操作的有效方法是遵循Add Column to 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"

【讨论】:

  • 对于添加的静态内容,选择对象应该更有效。见Possible Duplicate
  • 我进行了更新以引用该解决方案。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多