
我有一個多列 csv 文件,以逗號分隔,其中有兩列具有不同的日期 (mm/dd/yyyy)。我將找出這兩個日期之間的差異。以下是範例:
echo filename
001xxxc,28.2,03/04/2009,11/19/2009
00cvbfd,34.4,03/04/2009,01/06/2010
04rsdsd,34,12/01/2006,10/02/2001
456dfds,40,12/01/2006,04/23/2002
et556ss,40.8,12/01/2006,10/22/2002
我想知道是否可以使用 awk 命令來獲取日期差異。
我嘗試了這個 awk 命令,但我確定這不是正確的方法?
awk -F, '{print $1","$2","$3-$4}' filename
答案1
假設你想要天數的差異,那麼如果你有 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
必須是格式的字串"YYYY MM DD HH MM SS [DST]"
;將可選DST
標誌設為零會告訴它忽略夏令時(否則天真除以 86400 會得到小數天)。