UNIXでは、次のような日付文字列をエポックミリ秒に変換する方法:
19-FEB-12
16-FEB-12
05-AUG-09
これらの日付をサーバーの現在の時刻と比較するために必要です。
エポック以降の日付を秒に変換するには:
date --date="19-FEB-12" +%s
現在のエポック:
date +%s
だから、あなたの日付は過去にあるので:
NOW=`date +%s`
THEN=`date --date="19-FEB-12" +%s`
let DIFF=$NOW-$THEN
echo "The difference is: $DIFF"
BSDのdate
コマンドを使用するには、次のものが必要です。
$ date -j -f "%d-%B-%y" 19-FEB-12 +%s
GNU date
:との違い:
-j
は、date
がクロックを設定しようとするのを防ぎます-f
で明示的に設定する必要があります-d
)GNU awk
を使用する1つの方法を次に示します。走る:
awk -f script.awk file
script.awk
の内容:
BEGIN {
n = systime()
FS="-"
}
{
t = mktime(sprintf("%d %d %d %d %d %d", "20" $3, convert($2), $1, 0, 0, 0))
printf "%.1f days ago\n", (n - t) / 60 / 60 / 24
}
function convert(m) {
return(((index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC", m) - 1) / 3) + 1)
}
結果:
358.6 days ago
361.6 days ago
1286.6 days ago