Como grep um arquivo para um timestamp? Eu estou procurando os dígitos da hora

2

Estou fazendo um script usando o BASH que consulta o timestamp de um arquivo (~ / logs / Server_Info.log). Especificamente, quero extrair o dígito da hora do registro de data e hora e gravá-lo em uma variável.

Este é o formato que usei para o timestamp:

date +"%b-%d-%Y-%I:%M:%S %p"

E usei este script para extrair os dados:

#!/bin/bash
LAST_HOUR="$(( $(date +%I) - 1 ))"
SEARCH_STRING=$(date +"%b-%d-%Y-${LAST_HOUR}:")

timeval=$(grep "${SEARCH_STRING}" ~/logs/Server_Info.log)
echo "$timeval"

exit 0

No entanto, sempre que executo esse script, obtenho duas respostas:

Saída em branco

-ou -

04

que estava completamente errado, porque meu timestamp é

Mar-24-2017-05:07:00 PM 
    
por Nolinshun 25.03.2017 / 02:10

2 respostas

1

Com o awk, é algo como:

$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4}') && echo $var
04
$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4 - 1}') && echo $var
3
    
por 25.03.2017 / 06:14
1

O arquivo de registro contém o formato de data no formato 2017-03-15T08: 00: 23.698411Z. Se este calendário é em UTC é 2017-03-15T08: 00: 23.698411Z (a hora e a data são 08:00:23 e 2017-03-15) e será necessário convertê-lo no IST. Use o comando abaixo para a última hora

date -d '2017-03-15T08:00:23.698411Z last hours' -u +%s

1489561223

date -d @1489561223 +"%Y/%m/%d-%H:%M:%S"

2017/03 / 15-07: 00: 23

quer voltar 2 horas atrás e usar "2 horas atrás" em vez de "últimas horas".

Nota: - Estou executando o comando acima no servidor linux e o tempo do meu servidor linux está em UTC.Se você deseja executar o comando acima no servidor linux IST, você deve adicionar mais 5 horas e 30 minutos (por exemplo: - " Há 6 horas e 30 minutos "em vez de" últimas horas ").

espero que isso ajude muito, obrigado

    
por 25.03.2017 / 08:49