需要帮助使用TAIL和SED来查找字符串模式并将该字符串模式的一部分用作变量

时间:2015-11-23 10:14:58

标签: variables sed minecraft tail

我需要的是监视文件的最后一行(更具体地说是Minecraft服务器的latest.log文件)并测试它是否包含任何预定的字符串。

示例:

我想看看特定玩家何时说某个字符串。当玩家说出特定字符串时,latest.log的最后一行将如下所示:

[12:34:56] [Server thread/INFO]: <minecraft_player> string_i_need

minecraft_playerstring_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

1 个答案:

答案 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将打印时间。