İşte henüz yazdığım bir awk betiği, bir POSIX awk ile çalışması gerekir. Solaris sürümünü denemek zorunda kalacaksınız; Solaris'te iki tane Awk sürümü olduğunu unutmayın, biri / bin ve biri / usr / xpg4 / bin / awk.
BEGIN {
daysofmonth["01"] = 0; daysofmonth["02"] = 31; daysofmonth["03"] = 59;
daysofmonth["04"] = 90; daysofmonth["05"] = 120; daysofmonth["06"] = 151;
daysofmonth["07"] = 181; daysofmonth["08"] = 212; daysofmonth["09"] = 243;
daysofmonth["10"] = 273; daysofmonth["11"] = 304; daysofmonth["12"] = 334;
fullday = 86400;
}
/[12][09][0-9][0-9][01][0-9][0123][0-9]/ {
year = substr($0, 1, 4); month = substr($0, 5, 2); day = substr($0, 7, 2);
date = ((year - 1970) * 365.25) + daysofmonth[month] + day - 1;
if ((year % 4) == 0 && month > 2) { date = date + 1; }
print date * fullday - (25200);
}
{}
Bir YYYYmmdd tarih dizgisini geçirin ve Epoch'tan bu yana saniye sayısına dönüştürülecektir (bir miktar günlük sınırlarda olduğu için). O zaman ikisini de çıkarabileceksiniz.
today=`echo 20110210 | awk -f convdate.awk`
then=`echo 20001231 | awk -f convdate.awk`
sincethen=`expr $today - $then`