내가 방금 작성한 awk 스크립트는 POSIX awk와 함께 작동해야합니다. 당신은 솔라리스 버전을 시도해야 할 것이다; Solaris에는 Awk의 두 가지 버전이 있습니다. 하나는 / bin과 다른 하나는 / 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);
}
{}
YYYYmmdd 날짜 문자열을 전달하면 Epoch (일 경계에 약간의 영향을 미침) 이후 초 수로 변환됩니다. 그런 다음 둘을 뺄 수 있습니다.
today=`echo 20110210 | awk -f convdate.awk`
then=`echo 20001231 | awk -f convdate.awk`
sincethen=`expr $today - $then`