使用sort工具对日志负小数列从最负到正排序是否可行?
问题解答
给定如下日志内容:
the system name: dGMD_cluster10_1_300K: -34.48
MD_cluster11_1_300K: -40.31
MD_cluster1_1_300K: -40.23
MD_cluster2_1_300K: -37.86
MD_cluster3_1_300K: -25.65
MD_cluster5_1_300K: -11.91
MD_cluster6_1_300K: -0.50
MD_cluster8_1_300K: -16.62
MD_cluster9_1_300K: -15.26
要求忽略第一行,按第二列数值从最负到正排序,直接执行sort -n ./file_unsorted > file_sorted不可行,原因有两个:
- 该命令会把第一行注释也纳入排序,不符合“忽略第一行”的要求;
- 默认
sort -n是按整行的第一个字段排序,而我们需要的是按冒号后的第二列数值排序,原命令无法识别到目标列。
正确的命令应该是先跳过第一行,再指定按第二列(以冒号为分隔符)进行数值排序:
tail -n +2 ./file_unsorted | sort -t ':' -k 2n > file_sorted
参数说明:
tail -n +2:跳过文件第一行,从第二行开始输出;-t ':':指定冒号作为字段分隔符;-k 2n:表示按第2个字段进行数值排序,默认升序正好匹配“从最负到正”的需求。
内容的提问来源于stack exchange,提问作者James Starlight
相关产品推荐
相关产品推荐

