简体   繁体   English

在Shell脚本中对时间格式进行排序

[英]Sorting the time format in shell script

I have a file containing alerts occurence time. 我有一个包含警报发生时间的文件。 I want to sort those in ascending order. 我想按升序对它们进行排序。 Can you please guide me about this. 你能指导我这个问题吗?

Sample time format. 样本时间格式。

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

Maybe not super elegant, but straight forward in Python: 也许不是超级优雅,但在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)

It assumes your file is called sample_time.txt . 假设您的文件名为sample_time.txt

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM