添加条件到gnuplot awk脚本

时间:2014-09-24 14:25:02

标签: awk gnuplot

在社区的大量帮助下,我设法使用下面的脚本将 rebootlogfile.log 的图形转换为图形

command.gpl

 set terminal png size 2000,600
    set output '/usr/src/scripts/plots/core_temp_data/output.png'


    set size ratio 0.4
    set xdata time
    set timefmt "%H:%M:%S"

    plot "<awk '{print $4, substr($0,match($0,/temp=[0-9.]+/)+5,RLENGTH-5)}' /var/log/rebootlogfile.log" using 1:2 with lines

我使用

从shell运行脚本
gnuplot /usr/src/scripts/plots/core_temp_data/command.gpl

给了我 enter image description here

数据是一个巨大的文件,看起来如下所示,但在多天内有更多行,而不仅仅是星期六打印在这里:

Sat Sep 20 18:10:02 BST 2014 -- temp=57.3'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:11:01 BST 2014 -- temp=57.3'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:12:01 BST 2014 -- temp=57.8'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:13:01 BST 2014 -- temp=57.3'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:14:02 BST 2014 -- temp=58.4'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:15:01 BST 2014 -- temp=57.8'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:16:01 BST 2014 -- temp=57.3'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:16:02 BST 2014 -- WiFi seems stuck, rebooting - message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:17:18 BST 2014 -- temp=57.3'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:18:02 BST 2014 -- temp=58.4'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:19:01 BST 2014 -- temp=58.4'C -- message from script /usr/src/scripts/wifi_test_2.sh
Sat Sep 20 18:20:01 BST 2014 -- temp=58.9'C -- message from script /usr/src/scripts/wifi_test_2.sh
  1. 如何修改awk命令才能打印出来&#34; sun&#34;?我已修改了if语句问题1 here,但我遇到了语法错误。

  2. 如何在第三列上绘制零线或黑线,或者用什么来识别&#34; wifi似乎卡住&#34;

  3. 这是我从数据的电子表格图表中获取的(星期一,22小时后24小时):

  4. 我在考虑这样的事情:

    plot "<awk 'if ($1 == 'Sat') {print $4, substr($0,match($0,/temp=[0-9.]+/)+5,RLENGTH-5)}' /var/log/rebootlogfile.log" using 1:2 with points

    但是当我运行它时,我得到x range is invalid

2 个答案:

答案 0 :(得分:1)

您可以为“{”添加管道grep

plot '< (awk stuff) | grep "^Sun"' using 1:2 ...

^匹配一行的开头。

答案 1 :(得分:0)

感谢andyras指出我正确的方向。我试图grep一个没有从awk命令输出的列。经过进一步搜索,我偶然发现了conditions in awk和宾果游戏!这个命令有效!

plot "<awk '/Mon/ {print $4, substr($0,match($0,/temp=[0-9.]+/)+5,RLENGTH-5)}' /var/log/rebootlogfile.log" using 1:2 with points

enter image description here