我有如下数据,想按数字顺序对该值进行排序。这个命令不起作用。
sort -t'_' -nk3,2 c
输入数据
5_5_1_2
5_5_1_3
5_5_1_4
5_5_1_5
5_5_2
5_5_3
5_5_4
5_5_5
5_6
5_7
6_1_10
6_1_11
6_1_12
6_1_13
6_1_14
6_1_2
6_1_3
6_1_4
6_1_5
6_1_6
6_1_7
6_1_8
6_1_9
6_2_10
6_2_11
6_2_12
6_2_13
6_2_14
6_2_15
6_2_16
6_2_17
6_2_1
6_2_2
6_2_3
答案1
很难说出你想要完成什么,但我假设你需要:
5_5_1_2
5_5_1_3
5_5_1_4
5_5_1_5
5_5_2
5_5_3
5_5_4
5_5_5
5_6
5_7
6_1_2
6_1_3
6_1_4
6_1_5
6_1_6
6_1_7
6_1_8
6_1_9
6_1_10
6_1_11
6_1_12
6_1_13
6_1_14
6_2_1
6_2_2
6_2_3
6_2_10
6_2_11
6_2_12
6_2_13
6_2_14
6_2_15
6_2_16
6_2_17
作为输出。
这可以通过将数字视为“版本”来获得,并且“版本排序”可通过开关使用-V
,如下所示:
sort -V <file>
此行为在中进行了解释sort
手册页
答案2
-kx,y
方法:使用从第 x个字段的开头到第 y个字段的末尾结束的行部分作为排序键。
所以-k3,2
在这种情况下没有意义。如果你的意思是:对第三个字段进行数字排序,然后对第二个字段进行数字排序,那就是:
sort -nt_ -k3,3 -k2,2
或者:
sort -t_ -k3,3n -k2,2n
(这里将n
数字标志应用于每个关键规范,而不是使用该-n
选项全局进行数字排序)。