linux - 在shell脚本中对时间格式进行排序
问题描述
我有一个包含警报发生时间的文件。我想按升序对它们进行排序。你能指导我吗?
采样时间格式。
1 day, 19 hours
3 weeks
4 weeks, 1 day
2 minutes
1 month, 1 week
10 hours, 36 minutes
4 weeks, 1 day
4 weeks, 1 day
13 minutes
5 hours, 16 minutes
1 hour, 53 minutes
3 hours, 18 minutes
21 hours, 42 minutes
18 hours, 49 minutes
21 hours, 43 minutes
解决方案
也许不是超级优雅,但在 Python 中直截了当:
#!/usr/bin/env python
import operator
# 1 month = 28-31 days and 4 weeks = 28 days, so month is kept separate
time_in_seconds = {
'week': 7*24*60*60,
'day': 24*60*60,
'hour': 60*60,
'minute': 60,
'second': 1
}
if __name__ == '__main__':
times = []
with open('sample_time.txt', 'r') as f:
for line in f.read().split('\n'):
months = 0
seconds = 0
try:
for pair in line.split(', '):
num, denum = pair.split(' ')
if denum.startswith('month'):
months += int(num)
else:
seconds += time_in_seconds[denum.rstrip('s')]*int(num)
times.append([months, seconds, line])
except:
pass
sorted_times = sorted(times, key=operator.itemgetter(0,1))
for line in map(operator.itemgetter(2), sorted_times):
print(line)
它假定您的文件名为sample_time.txt
.
推荐阅读
- javascript - 动态生成的 svg 未正确呈现
- docker - Heroku Docker 镜像部署
- typescript - 打字稿中的通用类型级别方案
- php - 使用 PHP 脚本下载时出现网络故障
- android - 在 Android 和 Node.js 之间传输大文件
- java - 我如何检查颜色是否匹配?(匹配颜色的记忆游戏)
- html - 除元素换行外如何添加样式
- powershell - 在自定义 VSTS PowerShell 脚本任务中使用特殊字符
- java - 我不断收到扫描仪的 in.nextXXXX 的 NoSuchElement 异常
- java - 为什么我收到 UnsatisfiedLinkError