按 Import-CSV 中的最大数值值对对象进行排序
Sort-Object by greatest numerical value value from Import-CSV
我想要文件顶部的最大值 (mailboxSize)。我有一个 cvs 作为输入。
当我执行以下排序命令时:
Import-Csv import.csv| Sort-Object MailboxSize,DisplayName -Descending | Export-Csv SORT.csv
我得到以下结果:
"DisplayName","MailboxSize"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone7","27536"
"persone10","24253"
"persone8","1961"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone14","1156"
"persone13","1008"
但我想要这个结果!
"persone7","27536"
"persone10","24253"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone14","1156"
"persone13","1008"
导入 CSV 文件时,所有属性都设为 string
类型。您必须先将 MailboxSize
转换为 int
才能正确排序。尝试:
Import-Csv import.csv |
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending |
Export-Csv SORT.csv
您还应该在 Export-CSV
中使用 -NoTypeInformation
开关来避免 #TYPE .....
行(导出的 CSV 文件中的第一行)。
样本:
$data = @"
"DisplayName","MailboxSize"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone7","27536"
"persone10","24253"
"persone8","1961"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone14","1156"
"persone13","1008"
"@ | ConvertFrom-Csv
$data |
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending |
Export-Csv SORT.csv -NoTypeInformation
SORT.csv
"DisplayName","MailboxSize"
"persone7","27536"
"persone10","24253"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone8","1961"
"persone14","1156"
"persone13","1008"
我猜这些用户名是假的,但请注意,如果您的用户名实际上是 personeXX
,那么 DisplayName
也会出现同样的问题,其中 XX 是一个整数。喜欢:
persone7 27536
persone20 27536
persone13 27536
可能要对它们进行排序,您必须为 Sort-Object
创建一个脚本块或创建您自己的函数来拆分值并正确排序它们。
我想要文件顶部的最大值 (mailboxSize)。我有一个 cvs 作为输入。
当我执行以下排序命令时:
Import-Csv import.csv| Sort-Object MailboxSize,DisplayName -Descending | Export-Csv SORT.csv
我得到以下结果:
"DisplayName","MailboxSize"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone7","27536"
"persone10","24253"
"persone8","1961"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone14","1156"
"persone13","1008"
但我想要这个结果!
"persone7","27536"
"persone10","24253"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone14","1156"
"persone13","1008"
导入 CSV 文件时,所有属性都设为 string
类型。您必须先将 MailboxSize
转换为 int
才能正确排序。尝试:
Import-Csv import.csv |
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending |
Export-Csv SORT.csv
您还应该在 Export-CSV
中使用 -NoTypeInformation
开关来避免 #TYPE .....
行(导出的 CSV 文件中的第一行)。
样本:
$data = @"
"DisplayName","MailboxSize"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone7","27536"
"persone10","24253"
"persone8","1961"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone14","1156"
"persone13","1008"
"@ | ConvertFrom-Csv
$data |
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending |
Export-Csv SORT.csv -NoTypeInformation
SORT.csv
"DisplayName","MailboxSize"
"persone7","27536"
"persone10","24253"
"persone9","17076"
"persone11","17012"
"persone2","15351"
"persone12","11795"
"persone6","9941"
"persone3","8484"
"persone1","7008"
"persone4","4322"
"persone5","3106"
"persone8","1961"
"persone14","1156"
"persone13","1008"
我猜这些用户名是假的,但请注意,如果您的用户名实际上是 personeXX
,那么 DisplayName
也会出现同样的问题,其中 XX 是一个整数。喜欢:
persone7 27536
persone20 27536
persone13 27536
可能要对它们进行排序,您必须为 Sort-Object
创建一个脚本块或创建您自己的函数来拆分值并正确排序它们。