날짜가 다른 두 개의 열(mm/dd/yyyy)이 있는 쉼표로 구분된 다중 열 csv 파일이 있습니다. 나는 이 두 날짜의 차이점을 찾아보겠습니다. 예는 다음과 같습니다.
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
선택적 플래그를 0으로 설정하면 일광 절약 시간을 무시합니다(그렇지 않으면 86400으로 순진하게 나누면 소수 일수가 제공됩니다).