awk:日付で最も古いファイルと最新のファイルを探す

awk:日付で最も古いファイルと最新のファイルを探す

awk script私は日付(6番目、7番目、8番目のフィールド)に基づいて生成された最も古い最新のファイルを印刷するために使用しています。
私のサンプルリストの日付形式は(YYYY / MM / DD)です。

file was created 2020/10/10 20:18:42 its name is output1
file was created on 2020/09/10 12:13:22 its name is foobar.awk
file was created on 2020/10/10 20:12:43 its name is output2
file was created on 2020/12/10 18:11:38 its name is foobar.bash
file was created on 2020/12/10 22:32:13 its name is output.txt

次のようにする必要があります。

Oldest file date :
2020/09/10 12:13:22
file name: foobar.awk

Newest file date :
2020/12/10 22:32:13
file name: output,txt

awk注:「最も古いファイルと最新のファイルのみを印刷したい」のみ使用できます。
さらに:ファイルをソートせずに、最も古いファイルと最新のファイルのみを印刷します。

ベストアンサー1

GNU awkを仮定すると:

gawk '
    {created[$NF] = $5 " " $6}
    END {
        PROCINFO["sorted_in"] = "@val_str_asc"
        for (f in created) {print "oldest:", f, created[f]; break}
        PROCINFO["sorted_in"] = "@val_str_desc"
        for (f in created) {print "newest:", f, created[f]; break}
    }
' file

引用:配列巡回制御gawkで事前定義された配列スキャン順序を使用する

おすすめ記事