Если вам нужна разница в днях, тогда, если у вас есть GNU awk ( gawk
), вы можете сделать что-то вроде
gawk -F, '
{
split($3,a,"/");
split($4,b,"/");
t1 = mktime(sprintf("%d %d %d 0 0 0 0",a[3],a[1],a[2]));
t2 = mktime(sprintf("%d %d %d 0 0 0 0",b[3],b[1],b[2]));
print (t2-t1)/86400
}
' filename
260
308
-1886
-1683
-1501
Аргумент mktime
должен быть строкой в формате «ГГГГ ММ ДД ЧЧ ММ СС [DST]»
; установка необязательного флага DST
в ноль указывает ему игнорировать переход на летнее время (в противном случае наивное деление на 86400 приводит к дробным дням).
См. Gawk: Эффективное программирование AWK, 9.1.5 Функции времени