Como ver as linhas cuja coluna de data é menor que x dia a partir de hoje

0

Meu arquivo

ID=29524 02/12/2015,23:59:34,'PAt, 0,
ID=29628 02/12/2015,23:59:37,'PAb, 1.9,
ID=30816 03/12/2015,00:00:20,'PAc, 4.15,

Gostaria de imprimir arquivos com menos X dias a partir de hoje.

Minha tentativa está abaixo:

cat response.txt | awk -v start=$(date -d "-5 days" +%d/%m/%Y) -F" " '{split($2, a, /\//)} (a[3] a[1] a[2] <start)'| cut -d, -f1
    
por asitm9 09.12.2015 / 04:21

1 resposta

0

Eu assumi que quando você disse X dias a menos do que hoje, você quer dizer arquivos "com mais de 5 dias". Se você quer dizer arquivos exatamente 5 dias, o script abaixo precisaria ser modificado para deixar cair o carimbo de tempo mais provável e -se poderia ser substituído por -eq

#!/bin/bash

CUTOFF=$(date +%s -d "5 days ago")

while read p; do
   time=$(echo $p | awk -F'[ ,]' '{print $2" "$3}')
   epoch_time=$(date --date="$time" +%s) 

   if [ $epoch_time -lt $CUTOFF ]; then
   echo $p
   fi;
done <response.txt

O item acima carregará o arquivo response.txt e fará um loop em cada linha do arquivo. O awk está analisando por espaço e vírgula em colunas separadas e, em seguida, imprimindo a data e a hora. Depois disso (provavelmente poderia ser feito na mesma linha), ele converte a data / hora em um tempo de época em segundos. Depois disso, é uma questão simples de comparar o tempo de corte em segundos ao tempo de arquivo por meio de uma instrução if.

Os itens acima só imprimirão arquivos mais antigos que 5 dias .

    
por 09.12.2015 / 05:36