web-dev-qa-db-ja.com

ログファイルからデータを抽出し、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を使用して53.0に対して11:25:01をプロットすることは可能ですか、それとも不要なデータのログファイルを取り除く必要がありますか?

3
reggie

これを行うにはもっと良い方法があるかもしれませんが、以下は時間軸に文字列値を使用して、データに基づいてグラフを正確に生成しました。

#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

Output image

1
Brandon DuPree