假设我有一个文件numbers.txt
:
My number 1 ... My number 2 ... My number 3 ...
I am trying to calculate sum of the numbers above. I extracted a number from each line like this:
PS > $numbers = gc .\numbers.txt | sls -Pattern "number\ (\d+)" |
>> select {$_.matches[0].groups[1].Value}
>>
PS > $numbers
$_.matches[0].groups[1].Value
-----------------------------
1
2
3
看起来正是我想要总结的。接下来,我尝试应用Measure-Object:
$numbers | measure -sum
度量:输入对象“”不是数字。
在线:1个字符:12个
+ $ numbers |小数和
+ ~~~~~~~~~~~~~
+ CategoryInfo:InvalidType:(:PSCustomObject)[Measure-Object],
PSInvalidOperationException
+ FullyQualifiedErrorId:
NonNumericInputObject,Microsoft.PowerShell.Commands.MeasureObjectCommand
我究竟做错了什么?
最佳答案
您的数组不是由数字组成,而是具有非常长的属性名称(您的脚本块值)的对象,其中包含字符串值。
将 Select-Object
替换为 Foreach-Object
以获取该值,并将其转换为int
并进行计算。例如:
$numbers = gc .\numbers.txt | sls -Pattern "number\ (\d+)" | Foreach-Object {$_.matches[0].groups[1].Value -as [int] }
($numbers | measure -sum).Sum
关于powershell - 如何对选择字符串提取的数字求和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43500670/