【问题标题】:Powershell. Increase value in CSV file or Array电源外壳。增加 CSV 文件或数组中的值
【发布时间】:2013-09-04 12:57:58
【问题描述】:

我有一个 CSV 文件,如下所示:

Initials,Size excl. Backup/Pst,Number of warnings
USER1,100,1
USER2,100,1
USER4,400,2

我想将“警告次数”的值增加 1,所以我最终会得到:

Initials,Size excl. Backup/Pst,Number of warnings
USER1,100,2
USER2,100,2
USER4,400,3

我试过了,但没有成功。
我也试过把它放在数组中,但不能让它工作。

$Temp = Import-Csv $Database | foreach {$_.'Number of warnings' +1}

但这有两件事:
仅在数字末尾添加 1,因此 1 变为 11,2 变为 21(因为它是一个字符串)
输出只是“警告数”列 - 我的其余信息似乎已经消失了

【问题讨论】:

  • 我想你只是忘了分配加法... {$_'警告次数' = $_'警告次数' +1}
  • 对不起 Schwarzie2478,它失败了。当我添加点 {$_.'Number of warnings' = $_.'Number of warnings' +1} 它不再失败,但 $Temp 为空
  • 你也可以使用foreach {$_.'Number of warnings'++}
  • @AthomSfere 我试过了,但它不会将 string 转换为 int 并引发关于 ++ 运算符仅处理数字的错误。

标签: arrays powershell csv


【解决方案1】:

这行得通:

$myreport = Import-Csv .\testing.csv

$myreport | %{$_.'Number of warnings' = 1 + $_.'Number of warnings'}

【讨论】:

  • 所以将“1”放在前面,让 PS 将其从字符串更改为 INT。聪明...
  • @Lisbjerg 您也可以使用[int]$_.'Number of warnings'+1 将其显式转换为int
  • 为了清楚起见,请注意转换,确保不要将结果字符串转换为整数。您必须添加很多括号以确保强制转换发生在添加之前...啊动态编程的乐趣:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2020-07-27
  • 2019-01-15
  • 1970-01-01
  • 2020-11-16
相关资源
最近更新 更多