luk*_*mac 103 linux sorting command
示例: File.txt的内容:
100 foo
2 bar
300 tuu
Run Code Online (Sandbox Code Playgroud)
当使用'sort -k 1,1 File.txt'时,行的顺序不会改变,尽管我们期望:
2 bar
100 foo
300 tuu
Run Code Online (Sandbox Code Playgroud)
我们如何根据绝对数值对包含数字的字段进行排序?
And*_*ite 142
看一下手册页进行排序 ......
Run Code Online (Sandbox Code Playgroud)-n, --numeric-sort compare according to string numerical value
所以这是一个例子......
sort -n filename
Run Code Online (Sandbox Code Playgroud)
TMG*_*TMG 91
如果要对混合文本和数字的字符串进行排序,例如滚动日志的文件名,则排序使用sort -n
不会按预期工作:
$ ls |sort -n
output.log.1
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.2
output.log.20
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
Run Code Online (Sandbox Code Playgroud)
在那种情况下,选项-V
可以解决问题:
$ ls |sort -V
output.log.1
output.log.2
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.20
Run Code Online (Sandbox Code Playgroud)
来自手册页:
Run Code Online (Sandbox Code Playgroud)-V, --version-sort natural sort of (version) numbers within text
pgi*_*mon 18
那么,这里的大多数其他答案都是指
sort -n
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否适用于负数.以下是我在Fedora 9上使用排序版本6.10获得的结果.
输入文件:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Run Code Online (Sandbox Code Playgroud)
输出:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Run Code Online (Sandbox Code Playgroud)
这显然不是按数值排序的.
然后,我想更精确的答案就是使用,sort -n
但前提是所有值都是正值.
PS:sort -g
对于此示例,使用返回相同的结果
编辑:
看起来区域设置会影响减号如何影响订单(请参阅此处).为了得到适当的结果,我刚刚做了:
LC_ALL=C sort -n filename.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
124729 次 |
最近记录: |