Bash para combinar duas variáveis para diferença de tempo

0

Eu tenho um comando bash buscando detalhes da conta de usuário do MySQL usando o comando

select creationdate from users;

que me dá o seguinte resultado

Name     Account Creation Date   Mobile 
User1    2015-06-18 16:00:00     29292922
User2    2015-06-18 16:06:00     56896906
User2    2015-06-18 16:08:00     16842146

Agora, o que eu quero é combinar cada usuário ACCOUNT , CREATION , DATE com a data atual, e se a data de criação for menor de 5 minutos, ele deve listar as contas como

New accounts are user2 and user3

Algo parecido. Para que eu possa enviar SMS para eles que suas contas estão registradas agora.

    
por Syed Jahanzaib 18.06.2015 / 17:57

3 respostas

0

Esqueci de atualizar este tópico. Encontrei a solução no mesmo dia usando o seguinte

mysql -u$SQLUSER -p$SQLPASS -e "use $DB; select creationdate,login,package,expirydate,mobile from users WHERE creationdate >= NOW() - INTERVAL 5 MINUTE;"
    
por 01.07.2015 / 09:54
3

mysql deve poder fazer isso por você. Mas se você tiver que pós-processar essa saída, eu usaria:

perl -MTime::Piece -lne '
  if (/^(\S+)\s+(\d{4}\S+\s+\S+)/ and
      $t = Time::Piece->strptime($2, "%Y-%m-%d %T") and
      time - $t->epoch <= 5*60
     ) {print $1}'

Isso pressupõe que os nomes de usuário não podem conter caracteres de espaçamento.

    
por 18.06.2015 / 18:45
0

Com o GNU awk, você faria

awk '
    { time = $2 " " $3; gsub(/[-:]/, " ", time); t = mktime(time) }
    (systime() - t) <= 300 {print $1}
'
    
por 18.06.2015 / 23:11

Tags