PowerShell如何对MS DPM返回的带MB单位的磁带写入数据数组求和
带MB单位数值数组求和单行解决方案
适配MS DPM使用场景的PowerShell单行命令
MS DPM通常运行在Windows环境,优先给出PowerShell命令,假设你拿到的数组变量为$dpmTapeWriteVolumes,元素格式类似"1024MB"、"512.5MB":
($dpmTapeWriteVolumes | ForEach-Object { [decimal]($_ -replace 'MB', '') } | Measure-Object -Sum).Sum + 'MB'
- 逻辑说明:逐个移除元素的
MB后缀,转换为十进制数值后累加求和,最后拼接回MB单位 - 如果你需要自动兼容GB/TB等不同单位的返回值,可以使用扩展版本:
$unitMap = @{'KB'=1KB; 'MB'=1MB; 'GB'=1GB; 'TB'=1TB}; ($dpmTapeWriteVolumes | ForEach-Object { $num = [decimal]($_ -replace '[A-Za-z]',''); $unit = $_ -replace '[0-9.]',''; $num * $unitMap[$unit] } | Measure-Object -Sum).Sum / 1MB + 'MB'
该命令会自动把不同单位的数值统一转换为MB后累加。
Linux环境文本格式数据处理单行命令
如果你把数组导出为每行一个数值的文本文件(文件名假设为dpm_data.txt),可以使用awk命令处理:
awk '{gsub(/MB/,""); sum += $1} END {print sum "MB"}' dpm_data.txt

内容的提问来源于stack exchange,提问作者TechFA
相关产品推荐
相关产品推荐

