Powershell 排序数字字符串
读取文本文件数据:Powershell 排序数字字符串,powershell,Powershell,读取文本文件数据: 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 我已尝试获取内容文件txt |排序对象-唯一,但结果是: 1,26586,0 1,5689,0 1,789,1 2,5899,5689 2,5895,-2568 2,548679
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
我已尝试获取内容文件txt |排序对象-唯一,但结果是:
1,26586,0
1,5689,0
1,789,1
2,5899,5689
2,5895,-2568
2,548679,-11.485
首先,您需要将行拆分为单独的字段,以便排序例程可以分别处理每一列。由于您希望以数字排序,因此还需要将字符串转换为实际数字 试试这个:
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
Sort对象将所有内容都视为字符串 要实现您想要的,您需要显式地告诉它要将输入字符串的哪些部分视为数字类型,或者通过零填充数字将它们格式化为有意义的字符串 零填充字符串:
$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]}
-1表示问题陈述不佳。你要找的确切的分类顺序是什么?一列一列?