extrair dados de um arquivo de log e plotar usando o Gnuplot

3

Eu tenho um arquivo de log com os seguintes dados:

Sat Sep 20 11:25:01 BST 2014 -- temp=53.0'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 11:26:01 BST 2014 -- temp=53.0'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 11:27:01 BST 2014 -- temp=53.0'C -- message from script /usr/src/scripts/wifi_test_2.sh

Existem muitos mais registros, mas mostrei apenas 3.

Eu tenho um script com os seguintes comandos, mas os dados não estão no formato correto para o GNUplot funcionar.

SCRIPT:

set terminal png size 400,300
set output '/usr/src/scripts/plots/core_temp_data/output.png'
plot "/var/log/rebootlogfile.log" using 4:8 with lines

É possível plotar 11:25:01 contra 53.0 com um comando gnu, ou gnu e awk, ou eu tenho que remover o arquivo de log de dados desnecessários?

    
por reggie 23.09.2014 / 14:24

1 resposta

1

Pode haver maneiras melhores de fazer isso, mas o seguinte gerou um gráfico com precisão com base nos dados, com valores de string no eixo do tempo.

#Process log data into compatible format. plotdata is Just a copy/paste of your sample data
awk -F" -- " '{print $2,$1}' plotdata | while read temp date; do echo $(date --date="$date" '+%R') $(echo $temp | grep -o "[0-9\.]*"); done > plotdataout; 
#Run the script on the converted data
gnuplot gnuplotscript

Abaixo, segue o script do gnuplot com rótulos de string:

set term png 
set output "plotdata.png"
set title "Temp Data"
set xlabel "Time (s)"
set ylabel "Temp (F)"
set grid
plot "plotdataout" using 2:xticlabels(1) with lines

    
por 15.01.2016 / 05:32