Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 排序数字字符串_Powershell - Fatal编程技术网

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表示问题陈述不佳。你要找的确切的分类顺序是什么?一列一列?