-1

私はこのテキストを持っています:

aaaaaaaaaaaaaaaaaaaaddddd
sadasdafnsdfoisjhpfnsf
dasnfdfmsdf until: Thu Apr 29 19:41:02 EEST 2021 dasd
asdasmda[mfiun[hg[sm df,
dfmsdf[ismdfsdfsd,flsdfsdf******************

テキストから日付を解析する必要があり、その後、今日と比較する必要があります。それ以外の場合は、何か他のことを行う必要があり、シェルスクリプトで記述する必要がありますが、今はうまくいきません. 誰かが私にそれを行う方法の例を教えてもらえますか?

前もって感謝します。

4

2 に答える 2

1

私はそれを2つのステップで行います。(それは1つで行うことができます):

1、日付文字列を取得する 2、比較を行う

例えば:

 kent$  d=$(echo "aaaaaaaaaaaaaaaaaaaaddddd
sadasdafnsdfoisjhpfnsf
dasnfdfmsdf until: Thu Apr 29 19:41:02 EEST 2021 dasd
asdasmda[mfiun[hg[sm df,
dfmsdf[ismdfsdfsd,flsdfsdf******************"|grep -o '[A-Z].*[0-9]')

変数 d を確認します。

kent$  echo $d
Thu Apr 29 19:41:02 EEST 2021

この日付を今日と比較します。比較を行うには、両方の日付を秒に変換する必要があります。

kent$  echo $(($(date -d"${d}" +%s)-$(date +%s)))
251171977

上記のコマンドの結果を出力しました。あなたの場合、それを変数に割り当てることができます。または、結果を直接確認してください。>0 の場合は、テキスト内の将来の日付を意味します。それ以外の場合は、過去 (または今日と同じ) です。

編集

いくつかの数学:

int で:

kent$  echo $((251171977/(3600*24)))
2907

正確に:

kent$  echo "scale=2;251171977/(3600*24)"|bc 
2907.08

より正確に:

kent$  echo "scale=7;251171977/(3600*24)"|bc                                                                                                                                
2907.0830671
于 2013-05-14T14:45:26.953 に答える