【问题标题】:adding conditions to a gnuplot awk script向 gnuplot awk 脚本添加条件
【发布时间】:2014-09-24 14:25:01
【问题描述】:

在社区的大力帮助下,我设法使用以下脚本将 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

这给了我

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

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 命令以打印出“sun”?我尝试修改 if 语句问题 1 here,但出现语法错误。

  2. 如何在第三列绘制零线或黑线,或标识“wifi 似乎卡住”的内容

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

  4. 我在想这样的事情:

    plot "&lt;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

【问题讨论】:

    标签: awk gnuplot


    【解决方案1】:

    您可以在grep 中为“Sun”添加一个管道:

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

    ^ 匹配一行的开头。

    【讨论】:

    • plot " 不起作用是它与 " 和 '
    • 也许——在我的系统(Mac OS X)上使用单引号和双引号都可以使用该模式。当您在命令行而不是通过 gnuplot 运行该命令时会发生什么? “没用”不是很具有描述性;最好展示它是如何失败的。
    • 抱歉缺少错误消息:第 17 行:警告:跳过没有有效点的数据文件第 17 行:x 范围无效当我尝试运行整个过程时;并且在命令行中什么也没有发生,它只是不会返回到提示符。
    • 运行grep 时没有^ 字符会发生什么?还是什么都没有?
    • 这不是与“ & ' 以及它们的使用方式有关吗?我找不到任何像这样的语法示例来检查。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2021-09-10
      • 2020-07-07
      • 1970-01-01
      • 2013-01-07
      相关资源
      最近更新 更多