我有一个名为tmp.txt的文件(实际上是一个bash命令的输出),其中包含如下条目:
我想按照第一个字段和第二个字段进行排序。 问题在于我想对第一个字段进行字典排序,对第二个字段进行数字排序。
我尝试了以下方法:
将两个字段按字典顺序排序
这句话的意思不太清楚,可能需要更多的上下文才能正确翻译。可以提供更多信息吗?
据说这是一种稳定的排序方法,可以按第二个字段的数字进行排序。但实际上并不起作用,而是按字典顺序对第二个字段进行排序...
有什么想法吗?
...
ammp 0 1.03683
ammp 10 2.69954
ammp 1 1.05712
ammp 11 2.70339
ammp 12 2.70339
ammp 2 1.88586
ammp 3 2.50103
ammp 4 2.64734
ammp 5 2.67462
ammp 6 2.68097
ammp 7 2.68631
ammp 8 2.6904
ammp 9 2.69517
applu 0 0.678798
applu 10 0.922213
applu 1 0.901234
applu 11 0.923596
applu 12 0.923596
applu 2 0.901657
applu 3 0.903176
applu 4 0.908912
applu 5 0.913879
applu 6 0.914885
applu 7 0.915516
applu 8 0.917368
applu 9 0.920753
apsi 0 1.09037
apsi 10 2.20494
apsi 1 1.16651
apsi 11 2.24381
apsi 12 2.24381
apsi 2 1.49532
apsi 3 1.79137
apsi 4 1.79581
apsi 5 1.79601
apsi 6 1.80062
apsi 7 1.91269
apsi 8 1.9579
apsi 9 2.00872
...
我想按照第一个字段和第二个字段进行排序。 问题在于我想对第一个字段进行字典排序,对第二个字段进行数字排序。
我尝试了以下方法:
cat tmp.txt | sort -k1,2
将两个字段按字典顺序排序
cat tmp.txt | sort -k1 | sort -n -k2
这句话的意思不太清楚,可能需要更多的上下文才能正确翻译。可以提供更多信息吗?
cat tmp.txt | sort -s -k1.2n
据说这是一种稳定的排序方法,可以按第二个字段的数字进行排序。但实际上并不起作用,而是按字典顺序对第二个字段进行排序...
有什么想法吗?
-k
选项的描述中并没有明确说明它是有效的。GNU coreutils 的 man 手册 或 info 页面 明确指出了 "-k" 的选项参数可以包括像n
这样的选项。 - user743382