ログファイルからデータを抽出し、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

出力イメージ

おすすめ記事