我需要的是监视文件的最后一行(更具体地说是Minecraft服务器的latest.log
文件)并测试它是否包含任何预定的字符串。
示例:
我想看看特定玩家何时说某个字符串。当玩家说出特定字符串时,latest.log
的最后一行将如下所示:
[12:34:56] [Server thread/INFO]: <minecraft_player> string_i_need
当minecraft_player
说string_i_need
时,我需要它来触发其他内容,但我想我知道如何做到这一点我只需要知道如何将关键元素隔离为变量。
我希望将其分离为变量:
$TIME = [12:34:56]
$NAME = minecraft_player
$STRING = string_i_need
如果恶意玩家说[12:34:56] [Server thread/INFO]: <minecraft_player> string_i_need
导致latest.log文件的最后一行看起来像我一样,我还需要确保没有检测到“误报”:
[12:34:56] [Server thread/INFO]: <malicios_player> [12:34:56] [Server thread/INFO]: <minecraft_player> string_i_need
答案 0 :(得分:0)
您可以使用尾部管道将管道发送到grep来捕捉时间。
tail -n 1 log.log | sed -n "/^\[..:..:..\] \[Server thread\/INFO\]: \<minecraft_player\> string_i_need$/p" | grep -o "\[..:..:..\]"
tail -n 1 log.log
将返回名为log.log的文件的最后一行
如果minecraft_player表示string_i_need(误报率被拒绝),则| sed -n
将匹配该行,然后grep -o
将打印时间。