【问题标题】:Replace variable in CSV using Powershell使用 Powershell 替换 CSV 中的变量
【发布时间】:2015-06-24 20:50:33
【问题描述】:

我有一个每周生成的杂乱 CSV 文件。这是我开始的:

Company,Division,Department,Location,Job Title,Username
1-Acme INC,9000-CSD,6003-CSD IT,2-Downtown,IT Technician,user1
1-Acme INC,9000-CSD,6002-CSD HR,2-Downtown,HR Generalist,user2

我真正想要的是:

Company,Division,Department,Location,Job Title,Username
Acme INC,CSD,CSD IT,Downtown,IT Technician,user1
Acme INC,CSD,CSD HR,Downtown,HR Generalist,user2

基本上,我只想删除该字段的“[numeric]-”部分。我搜索了高低,发现了用 powershell 替换 CSV 字符串的不同变体,但没有找到正确的语法来使用 powershell 替换 CSV 中的变量文本。

这是我目前所拥有的。当我检查输出时,没有任何变化。

$csv = Import-Csv .\test.csv
$csv | %{ $_ -replace "^[0-9]+-"}
$csv| Export-Csv .\test.csv -NoTypeInformation -Force

任何帮助将不胜感激!

【问题讨论】:

  • 为什么不将 csv 文件作为文本文件处理呢?您仍然可以将生成的输出文件导入为 csv。

标签: variables powershell csv scripting


【解决方案1】:

你需要使用:

$csv = get-content .\test.csv
$csv = $csv -replace "[0-9]+-", ""
$csv | out-file .\test.csv

或第 2 行可能只是:

$csv = $csv -replace "[0-9]+-"

【讨论】:

  • 当我尝试这样做时,它实际上杀死了我在 CSV 文件中的所有文本并将其替换为:长度 388
  • 需要换行才能正确执行此操作,但希望您能弄清楚。 $csv = "1-Acme INC, 9000-CSD, 6003-CSD IT" $csv = $csv -replace "[0-9]+-" $csv 为我返回 Acme INC、CSD、CSD IT。
  • 请注意,我删除了 ^,因为它只替换了行首的数字。
  • 托尼,这就是我试图摆脱的。我们这里有数千种可能的选项,所以如果我必须输入每一种可能性,我最好不要编写脚本。我希望使用正则表达式来替换“数字”条目。
  • 我认为 import-csv 是这里的症结所在。我正在使用 $csv 变量,就像您使用 get-content 一样。让我测试一下……
猜你喜欢
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多