【问题标题】:fix duplicate columns names in csv file修复 csv 文件中重复的列名
【发布时间】:2018-05-23 15:03:28
【问题描述】:

给定一个逗号分隔的纯文本文件 import-week10.csv 文件,我想更改标题,以解决重复的列名问题。 “更正”的标题将在另一个文件 correct.csv(那里唯一的行)中可用。然后文件 import-week10.csv 将使用这个新标题保存(覆盖)。

文件第一行示例:

ID,name,surname,DOB,name,surname,DOB,amount

ID,"name","surname","DOB",name,surname,DOB,amount

应该变成,具有唯一的列名:

ID,"name main","surname main","DOB main","name joint","surname joint","DOB joint",amount

第一个问题,如何使用 Powershell 编写此更改脚本?

第二个问题,我想比较一下并得到一个警告:如果第一行在 import-week10.csv 中发生了变化,与上周的文件 import-week09.csv 相比。假设每隔几周就会添加或更改新列。

环境:WS 2012 R2,如果需要可以更新到最新的PS版本。

【问题讨论】:

  • 到目前为止您尝试了哪些方法,结果如何?
  • 获取内容“import-week10.csv” |选择-前 2 | Out-File "test.csv" Import-CSV -Header ID,"name main","surname main","DOB main","name Joint","surname Joint","DOB Joint",金额 test.csv

标签: powershell csv


【解决方案1】:

这是你字面问题的答案,但我不确定这真的是你想要的:

$correctHeader = (Get-Content .\correct.csv)[0]
$in = Get-Content  .\import-week10.csv
$in[0] = $correctHeader
$in | Set-Content .\correct.csv

【讨论】:

  • 谢谢。不完全是我需要的。我在正确的.csv 中有列名正确的行,我想用它来替换 import-week10.csv 中的行,并保存更新的版本。
  • 由于某种原因,这只会从标题中获取第一个字符,而不是根据需要获取整行。
  • 真的吗?这太奇怪了。这段代码对我有用。您具体是如何实施的?
  • 正如您在答案中所写的那样。但它对我来说没问题: $correctHeader = Get-Content .\correct.csv | Select-Object -First 1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 2018-08-22
  • 1970-01-01
相关资源
最近更新 更多