tom*_*afe 5 unix linux sorting
运用 sort (coreutils) 5.2.1
我有以下文件,我想按字段4的非整数部分排序.这可以是负数或正数,也可能具有值INF.
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=INF field5 field6
Run Code Online (Sandbox Code Playgroud)
我希望将其排序为
field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
Run Code Online (Sandbox Code Playgroud)
鉴于字段的数字部分位于字符位置4(假设索引从0开始,我不确定),我尝试sort使用以下选项:
sort -g -k4.4 inputfilesort -g -k4.5 inputfilesort -n -k4.4 inputfilesort -n -k4.5 inputfilesort -g inputfile这些都产生以下结果,这是接近但不太正确.大小正确排序,但我想要最负面值.
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
Run Code Online (Sandbox Code Playgroud)
我该如何sort表现?
FWIW,这里有更多信息:
LANG = en_US.UTF-8
Red Hat Enterprise Linux WS release 4 (Nahant Update 6)
Run Code Online (Sandbox Code Playgroud)
我使用的是 Mac,所以它的实现可能略有不同,但我发现这是可行的:
sort -gb -k 4.5,4 inputfile
英文:“排序,以-g一般数字方式,忽略-b lanks,使用第 4个-k(c)列数据的文件输入文件,从该列中的第 5个元素到该列中数据的末尾第四栏”
field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
Run Code Online (Sandbox Code Playgroud)