【问题标题】:how to sort openssl's index.txt based on the time stamp如何根据时间戳对openssl的index.txt进行排序
【发布时间】:2013-03-06 06:27:54
【问题描述】:

我需要在openssl的index.txt文件中找到具体的记录,然后根据时间戳排序,让最新的记录出现在最上面。我正在将文件读入数组,数组如下所示:(我已将表转储到日志文件中)

database= {}
database[1] = "R    140318001552Z   130318002148Z   7D      unknown /CN=test@test.net/emailAddress=test@test.net"
database[2] = "V    140318001809Z           7E      unknown /CN=test@yahoo.com/emailAddress=test@yahoo.com"
database[3] = "V    140318002157Z           7F      unknown /CN=test@yahoo.com/emailAddress=test@yahoo.com"

我希望能够按第二列(即时间戳)对这个数组进行排序。我需要首先对最新记录进行排序。 我将如何在 lua 中编写此代码?

谢谢。

【问题讨论】:

    标签: arrays sorting lua openssl


    【解决方案1】:

    如果您的模式是这样固定的,您可以简单地搜索第一个数字(使用string.match)并比较这些数字。请注意,string.match 会给你字符串而不是数字。但是由于数字的长度相等,因此词法比较就足够了。当然,如果有必要,您可以使用适当的库将该字符串转换为数字甚至日期/时间对象。但让我们保持简单:

    table.sort(database, function(e1,e2)
        return string.match(e1, "%d+") > string.match(e2, "%d+")
    end)
    

    如果e1 在排序表中应位于e2 之前,则提供给sort 的函数应返回true

    【讨论】:

    • 您介意扩展您的答案以包含执行您提到的 string.match 的代码吗?我对lua很陌生。谢谢
    • @dot string.match 是一个标准库函数。只需 require "string" 在您的 lua 文件的开头。有关其文档,请参阅 here,有关模式的工作原理,请参阅 here
    猜你喜欢
    • 2012-07-15
    • 2018-08-09
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2014-05-01
    • 2019-11-11
    相关资源
    最近更新 更多