テキストファイルで日付を並べ替える方法は?

テキストファイルで日付を並べ替える方法は?

現在は2019年8月14日で、日付リスト(dd.mm.yyyy)を含むテキストファイルがあります。

30.07.2018
14.08.2019
18.08.2019
20.08.2019
01.01.2020

リストの日付は期限です。

出力は次のようになります。現在の日付より前の日付と10日後に有効期限が切れる日付のリスト(1〜10日以内に有効期限が切れた場合にリストされ、今日の有効期限が切れた場合にもリストされます。)11日以上の後の有効期限がリストにない場合。

ベストアンサー1

GNUの使用date:

#! /bin/sh -
printf '%s days\n' -1 +10 |
  date -f - +%d.%m.%YT |
  sort -nt. -k3 -k2 -k1 -- - "$@" |
  sed '/T/,/T/!d;/T/d'

アイデアは、昨日と10日後の日付を挿入し、で終わるリストを並べ替えることです。Tたとえば、2019-08-14で実行している場合は、次のような結果が得られます。

30.07.2018
13.08.2019T
14.08.2019
18.08.2019
20.08.2019
24.08.2019T
01.01.2020

私たちはこれらの2行の間の部分を抽出しますT

$ faketime 2019-08-14 that-script your-file
14.08.2019
18.08.2019
20.08.2019

おすすめ記事