Comparar valores de data entre dois arquivos

0

Eu tenho dois arquivos com datas:

Arquivo1

12/22/2017

Arquivo2

12/21/2017    
12/20/2017    
12/23/2017    

O arquivo1 terá apenas um registro. Arquivo2 terá vários registros. Eu preciso verificar se alguma das datas no arquivo2 é maior que a data no arquivo1. O formato de data em ambos os arquivos será MM/DD/YYYY .

    
por Harish 09.01.2018 / 12:10

3 respostas

3

Este é um script pequeno que sort s ambos os arquivos, grep s para datas posteriores ao arquivo1 e depois conta ( wc -l ) se houver mais de 1 uniq line (deve ser apenas 1, que vem do arquivo1):

if [[ "$(sort -t/ -k3,3n -k1,1n -k2,2n file1 file2 | grep -A 1 -f file1 | uniq | wc -l)" -gt 1 ]]
    then
       echo "Date in file2 is greater than file1"
    else
       echo "Date in file2 is not greater than file1"
fi
    
por 09.01.2018 / 13:40
2
Solução

GNU awk :

awk -F'/' '{ d=$3$1$2 }
           NR==FNR{ t=d; nextfile }
           d > t{ 
               print "file2 has date(s) greater than in file1";
               exit 
           }' file1 file2

A saída:

file2 has date(s) greater than in file1
    
por 09.01.2018 / 12:53
-1

Obtenha o tempo em segundos a partir da época (consulte man stat) e imprima a diferença.

T1=$(stat --printf='%Y\n' file1.txt)
T2=$(stat --printf='%Y\n' file2.txt)

echo $(($T1 - $T2))
    
por 09.01.2018 / 13:22