로그 파일에서 데이터를 추출하고 Gnuplot을 사용하여 플롯합니다.

로그 파일에서 데이터를 추출하고 Gnuplot을 사용하여 플롯합니다.

다음 데이터가 포함된 로그 파일이 있습니다.

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

더 많은 로그가 있지만 3개만 표시했습니다.

다음 명령이 포함된 스크립트가 있지만 데이터가 GNUplot에서 작업하기에 적합한 형식이 아닙니다.

스크립트:

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

gnu 명령이나 gnu 및 awk를 사용하여 11:25:01 대 53.0을 플롯할 수 있습니까? 아니면 로그 파일에서 불필요한 데이터를 삭제해야 합니까?

답변1

아마도 더 좋은 방법이 있을 수 있지만 아래 방법은 타임라인에 문자열 값을 사용하여 데이터를 기반으로 차트를 정확하게 생성합니다.

#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

다음은 문자열 레이블이 있는 gnuplot 스크립트입니다.

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

출력 이미지

관련 정보