从 system.log 字符串中解析变量并使用解析的变量运行命令

从 system.log 字符串中解析变量并使用解析的变量运行命令

我当前的解决方案有效,但我知道有更好的方法可以做到这一点。

我目前运行 macOS system.log 的尾部来查找关键字。我为每个要搜索的关键字都有一个单独的脚本,然后运行 ​​writestate 命令来反映关键字已出现。

我更喜欢使用日志中显示的关键字触发器,例如“场景名称=[MOVIE]”,然后从字符串中解析 MOVIE 并将其插入到一个变量中,然后将其写入为状态。

我为创建的每个场景名称编写了以下脚本,但是直接将该值写入变量然后在收到命令时运行命令会更清晰。

#!/bin/bash
tail -F /var/log/system.log |
grep --line-buffered 'MOVIE' |
while read ; do ~/Applications/RacePointMedia/sclibridge writestate userDefined.ActiveScene MOVIE ; done

答案1

我使用这个 awk 语句从 mySQL.logs 获取内容。我为你的字符串和日志文件调整了它。

我不确定这会对你有帮助,但听起来可能会有帮助。这会从日志中获取包含匹配项的最后一行,并将最后一个字段放入 word_match 中。您可以将第一个字段的 {a=$0} 增加到 {a=$1},第二个字段的 {a=$2} 等等。

`word_match=`awk '/scene name=\[MOVIE\]/ {a=$0} END{ print a }' /var/log/system.log | awk '{print $(NF)}'
echo $word_match #to display what you got. 

希望这可以帮助

相关内容