1

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"

これは、タイムスタンプである 2 番目の列でこの配列をソートできるようにしたいと考えています。最新のレコードを最初にソートする必要があります。このコードを lua でどのように記述しますか?

ありがとう。

4

1 に答える 1

1

パターンがこのように固定されている場合、( を使用して) 最初の番号を検索し、string.matchそれらの番号を比較するだけです。string.match数値ではなく文字列が得られることに注意してください。しかし、数値は同じ長さなので、字句比較で十分です。もちろん、必要に応じて、適切なライブラリを使用して、その文字列を数値または日付/時刻オブジェクトに変換することもできます。しかし、それを簡単にしましょう:

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

に指定された関数は、ソートされたテーブルで前に来る必要がある場合にsort返されます。truee1e2

于 2013-03-18T01:04:47.527 に答える