BASHを使用してUnixタイムスタンプを確認する

BASHを使用してUnixタイムスタンプを確認する

私のgoogle-fuが失敗したので、ここで誰かが私に正しい方向を伝えることを願っています。いくつかのデータ検証タスクを実行していますが、システムがunix epoch形式(epoch以降の秒単位)で誤った日付を記録しているようです。1357853083(unix epoch以降の秒数)などのデータが与えられたら、bashで有効なunixタイムスタンプであることを確認する簡単な方法はありますか?理想的には、人間が読める日付に変換できないタイムスタンプと、現在の日付より後の日付にレンダリングできるタイムスタンプを探しています。

人間が読める日付に変換するこのモンスターを編集しましたが、無効な日付を見つける方法がわかりません。

$ grep "delimiter" * | grep -v "delimiter2" | awk -F"," '{print $2}' | awk -F":" '{print $2}' | awk -F"*" '{print $1}' | awk '{printf("%s", strftime("%Y.%m.%d ",$1)); printf("%s", strftime("%H:%M:%S \n",$1))}' | sort -V

答え1

だから私は2つのテストをしたいようです。

  1. システムが32ビットまたは64ビット時間を使用しているかどうかに応じて、-2147483648から2147483647または+-9.22337203685478E18の間の有効なエポック時間番号を確認してください。
  2. 今日の日付より小さい数字があることを確認したいと思います。

したがって、これら2つのテストを組み合わせると、-2147483648から現在の時点までの時間範囲内の数字が見つかります。以下のコードは必要な作業を行う必要があります。しかし、コンピュータがインストールされた日付やオペレーティングシステムがコンパイルされた日付など、合理的な時代の日付に下限を上げます。下限を0秒または1970年1月1日に任意に設定しました。

#$i stores the value being tested
#returns failed if it fails validation, otherwise it returns passed
if [ $i -le 0 -o $i -gt `date +%s` ]; then echo "failed"; else echo "passed"; fi;

関連情報