linux - 壳牌 | 按升序排列日期和月份
问题描述
我想按日期和月份的升序显示/排序文件记录,或者如果有任何相等的数据值,它们应该按升序在下一列中列出。
要排序的日期和月份:(当前方案)
- 版本.....03.02../版本>
- 版本.....19.01../版本>
- 版本.....02.02..版本>
文件内容:
- 版本>0.1.1-ABC-XYA-BR- 03.02 - v1.0-1-4d4f3dd/版本>
- 版本>0.1.1-XYZ-LOK-BR- 19.01 - v1.0-5-8a8d7dd/版本>
- 版本>0.1.1-DXD-UIJ-BR- 02.02 - v1.0-4-9o2k4wk/版本>
我将如何实现以下结果?
- 版本>0.1.1-XYZ-LOK-BR- 19.01 - v1.0-5-8a8d7dd/版本>
- 版本>0.1.1-DXD-UIJ-BR- 02.02 - v1.0-4-9o2k4wk/版本>
- 版本>0.1.1-ABC-XYA-BR- 03.02 - v1.0-1-4d4f3dd/版本>
我尝试使用排序:(不工作)
sort -n sortfile.txt
- 版本>0.1.1-DXD-UIJ-BR- 02.02 - v1.0-4-9o2k4wk/版本>
- 版本>0.1.1-ABC-XYA-BR- 03.02 - v1.0-1-4d4f3dd/版本>
- 版本>0.1.1-XYZ-LOK-BR- 19.01 - v1.0-5-8a8d7dd/版本>
解决方案
您可以使用sort
,但您需要指定字段分隔符-t '-'
,以便字段分隔'-'
,然后指定keydef以在第 5 个字段上排序,从第 4 个字符开始,然后再次使用第一个字符,最后在字段上进行版本排序6 如果其他条件相同。那将是:
sort -t '-' -k5.4n -k5.1n -k6V contents
在每个 keydef 中提供完整的开始和停止字符可以如下完成:
sort -t '-' -k5.4n,5.5 -k5.1n,5.2 -k6V contents
(虽然对于这个数据,输出没有改变)
示例使用/输出
$ sort -t '-' -k5.4n -k5.1n -k6V contents
ver>0.1.1-XYZ-LOK-BR-19.01-v1.0-5-8a8d7dd/ver>
ver>0.1.1-DXD-UIJ-BR-02.02-v1.0-4-9o2k4wk/ver>
ver>0.1.1-ABC-XYA-BR-03.02-v1.0-1-4d4f3dd/ver>
推荐阅读
- statistics - SoapUI 负载测试统计数据中的 sum 列
- python - 如何正确使用 SQL LIKE 语句从 Flask 应用程序中查询数据库
- php - Symfony,在表单中预先提示/显示验证约束消息
- mysql - 错误 1054 (42S22):“on 子句”中的未知列“pc.project_id”,即使列 project_id 存在
- css - 无法在 Angular 9 项目中使用外部 CSS 样式表
- arrays - 放心 - 响应正文显示成功的空值
- python - openpyxl 中看不到边框
- javascript - NodeJS错误:找不到变量:需要
- discord.py - 如何将消息变成字符串
- google-cloud-platform - Terraform - 重用现有子网在 GCP 上创建云 sql 实例