我有一个具有以下值的csv文件。使用import-csv计算每个文档的最高版本。
DocName Version
-----------------
DocA.docx 4.0
DocA.docx 3.9
DocA.docx 3.8
DocB.docx 2.0
DocB.docx 1.0
DocC.docx 0.2
DocC.docx 0.1如何获得每个DocName的最大版本?例如,对于DocA.docx,最高版本为4.0,而对于docB.docx,最高版本为2.0。
我需要用powershell给出输出吗?
发布于 2020-02-06 12:14:13
我建议将(比较)版本视为[version]类型,而不是@Dave建议的默认Import-Csv [string]类型或[decimal]类型。
要做到这一点,您可以在计算属性中使用[version[]]数组:
Import-Csv .\MyFile.csv | Group-Object DocName |
Select Name, @{
Name = 'Version'
Expression = {([version[]]$_.Group.Version | Measure-Object -Maximum).Maximum}
}发布于 2020-02-06 08:45:43
组表,排序版本并选择最高编号。
$TableGrouped = $Table | Group-Object {$_.DocName}
ForEach ($item in $TableGrouped) {
$item.Group | Sort-Object -Descending -Property Version | Select-Object -First 1
}发布于 2020-02-06 08:39:03
导入CSV时,需要将版本转换为十进制,然后可以使用Group-Object和Measure-Object逐文件获得最高版本。就像这样:
$file = Import-Csv -Delimiter ',' | % {$_.Version = [decimal]$_.Version}
$file | Group-Object DocName | Select Name, @{Name = 'Version'; Expression = {($_.Group.Version | Measure-Object -Maximum).Maximum}}https://stackoverflow.com/questions/60089098
复制相似问题