bash - Bash Shell:如何按最后一列的值排序,但忽略文件的标题?
问题描述
文件
ID First_Name Last_Name(s) Average_Winter_Grade
323 Popa Arianna 10
317 Tabarcea Andreea 5.24
326 Balan Ionut 9.935
327 Balan Tudor-Emanuel 8.4
329 Lungu Iulian-Gabriel 7.78
365 Brailean Mircea 7.615
365 Popescu Anca-Maria 7.38
398 Acatrinei Andrei 8
除了标题之外,如何按最后一列对其进行排序?
这是更改后文件的样子:
ID First_Name Last_Name(s) Average_Winter_Grade
323 Popa Arianna 10
326 Balan Ionut 9.935
327 Balan Tudor-Emanuel 8.4
398 Acatrinei Andrei 8
329 Lungu Iulian-Gabriel 7.78
365 Brailean Mircea 7.615
365 Popescu Anca-Maria 7.38
317 Tabarcea Andreea 5.24
解决方案
您只想按最后一列排序,但sort
不容易做到这一点。所以用每行开头要排序的列重写数据:
暂时忽略标题(尽管这通常会自行工作):
awk '{print $NF, $0 | "sort -nr" }' input | cut -d ' ' -f 2-
如果您确实需要修剪订单(例如,它在排序中混合),您可以执行以下操作:
< input awk 'NR==1; NR>1 {print $NF, $0 | "sh -c \"sort -nr | cut -d \\\ -f 2-\"" }'
或者
awk 'NR==1{ print " ", $0} NR>1 {print $NF, $0 | "sort -nr" }' OFS=\; input | cut -d \; -f 2-
推荐阅读
- python-3.x - 爬取谷歌翻译 Python
- java - jframe 的背景 contentPane 干扰了它上面的 jpanel
- css - 圣诞灯环效果
- ruby-on-rails - 上传文件时权限被拒绝
- c - 将字符串文字从函数返回到另一个
- php - __destruct 是按其自身运行还是我需要使用 unset() 或 register_shutdown_function() 才能使其工作
- angular - 高级角度路由 - 可以这样做吗?
- excel - 如何根据特定发件人和特定日期使用 vba 将 Outlook 邮件表复制到 Excel
- android - 我可以在firebase-android中搜索孩子的孩子吗
- gradle - 在 IntelliJ 中使用 gradle 时如何排除特定的 jar