已知一个文件里面的内容如下所示
lixiao_20190523_8KM
lihua_20199622_6.5KM
xuliang_20190520_8.5KM
lixiao_20190523_20KM
lihua_20199622_10.5KM
lihua_20199622_1.5KM
要求如下 需要把最后的千米数加起来按照从大到小的人名排序
$ cat test
lixiao_20190523_8KM
lihua_20199622_6.5KM
xuliang_20190520_8.5KM
lixiao_20190523_20KM
lihua_20199622_10.5KM
lihua_20199622_1.5KM
## 去掉末尾KM
$ cat test | sed s/KM$//
lixiao_20190523_8
lihua_20199622_6.5
xuliang_20190520_8.5
lixiao_20190523_20
lihua_20199622_10.5
lihua_20199622_1.5
## 获取和值
$ cat test | sed s/KM$// | awk -F '_' '{a[$1]+=$3} END{for(i in a) print i, a[i]}'
xuliang 8.5
lixiao 28
lihua 18.5
## 排序
$ cat test | sed s/KM$// | awk -F '_' '{a[$1]+=$3} END{for(i in a) print i, a[i]}' | sort -r -n -k 2
lixiao 28
lihua 18.5
xuliang 8.5