Diferença entre datas por awk

1

Eu tenho o arquivo abaixo:

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

Usando awk , como posso verificar o número de dias entre duas datas (US $ 6 e US $ 9)?

Para o último registro, o resultado deve ser 90

é factível? Obrigado ...

    
por Eng7 03.08.2015 / 19:01

2 respostas

2

A partir da pergunta, suponho que você queira contar todos os meses como 30 dias. Nesse caso, você não precisa usar ferramentas externas (como date ), apenas calcule o número de dias sozinho:

awk -F'[,-]' '{print 360*($6-$11)+30*($7-$12)+($8-$13)}' file

-7652
-8770
-270
95
90
    
por 03.08.2015 / 19:47
2

Supondo que o gnu awk esteja bem aqui ...

Aqui está uma maneira, dá a diferença de dias. Mas isso não é estritamente o que você quer (2015-11-02 thru 2015-08-02 é 92 dias e você quer um resultado de 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
$
    
por 03.08.2015 / 20:09

Tags