阅读文本文件数据:
1,26586,0
1,789,1
1,5689,0
2,5895,-2568
2,5899,5689
2,548679,-11.485
然后对结果进行排序:
1,789,1
1,5689,0
1,26586,0
2,5895,-2568
2,5899,5689
2,548679,-11.485
我尝试了get-content file txt | sort-object -unique
,但结果是:
1,26586,0
1,5689,0
1,789,1
2,5899,5689
2,5895,-2568
2,548679,-11.485
答案 0 :(得分:0)
首先,您需要将行拆分为单独的字段,因此排序例程可以单独处理每个列。而且由于你想要用数字排序,你还需要将字符串转换为实际数字。
试试这个:
Import-Csv 'C:\path\to\your.txt' -Headers 'A','B','C' |
select @{n='A';e={[int]$_.A}}, @{n='B';e={[int]$_.B}}, C |
sort -Unique A, B
答案 1 :(得分:0)
Sort-Object将所有内容视为字符串。
为了达到你想要的效果,你需要明确地告诉它输入字符串的哪些部分要作为数字类型处理,或者通过对数字进行重写来将它们格式化为有意义的字符串。
零填充字符串:
$Lines = Get-Content .\file.txt
$Lines |Sort-Object -Unique { "{0:D10}{1:D10}{2:F10}" -f $([int[]]($_-split",")) }
视为个别数字:
$Lines = Get-Content .\file.txt
$Lines |Sort-Object -Unique {[int]($_-split",")[0]}, {[int]($_-split",")[1]}, {[double]($_-split",")[2]}