다음 파일이 있습니다.
1,2,3,4,5,2015-10-13,7,8,2037-01-15
1,2,3,4,5,2015-09-05,7,8,2040-01-15
1,2,3,4,5,2015-09-15,7,8,2016-06-15
1,2,3,4,5,2015-10-13,7,8,2015-07-08
1,2,3,4,5,2015-11-02,7,8,2015-08-02
을 사용하여 awk
두 날짜($6와 $9) 사이의 일수를 어떻게 확인할 수 있나요?
마지막 레코드의 경우 결과는 다음과 같아야 합니다.90
가능합니까? 감사해요...
답변1
질문에 따르면 모든 달을 30일로 계산한다고 가정합니다. 이 경우 외부 도구(예: )를 사용할 필요가 없으며 date
직접 날짜를 계산하면 됩니다.
awk -F'[,-]' '{print 360*($6-$11)+30*($7-$12)+($8-$13)}' file
-7652
-8770
-270
95
90
답변2
여기서는 gnu awk가 괜찮다고 가정합니다...
다음은 일수 차이를 제공하는 방법입니다. 하지만 이는 원하는 결과가 아닙니다(2015-11-02부터 2015-08-02까지의 기간은 92일이며 원하는 결과는 90일입니다).
$ awk -F, '{ gsub(/-/," ",$0); print (mktime($6 " 00 00 00")-mktime($9 " 00 00 00"))/86400 }' file.txt
-7765.04
-8898.04
-274
97
92.0417
$