同时对文件进行 tail、cat 和 grep

同时对文件进行 tail、cat 和 grep

因此,我需要在 Linux 中监视日志文件,并且我想 cat 内容(以查看所有先前的条目)以及 tail 日志文件,同时使用 grep 过滤出我想从日志中看到的内容。此外,如果 tail 可以在 cat 命令停止显示条目的地方继续,那就太好了。

我该如何做呢?

编辑:

为了让我的问题更清楚一点,我想要的是:

log.txt:
Line 1 <--- Starting from here is what lines I need
Line 2
Line 3
Line 4
Line 5 <--- Here is where the tail command will start displaying
Line n - 1
Line n <--- Here is where the tail command will continue to go

我需要能够抓住所有这些并对其进行 grep。

答案1

我不知道这是否是你要找的,但你可以尝试这个:

grep "pattern you are looking for" log.txt;tail -n 0 -f log.txt | grep "pattern you are looking for"

它接连调用两个命令。首先,从日志文件中 grep 您感兴趣的模式,然后在文件末尾启动 tail -f,将输出重定向到 grep。

不过我建议您只使用一个命令来执行此操作,您可以使用 -n 参数指定 tail 要显示的行数(+1 表示从第一行开始):

tail -n +1 -f log.txt | grep "pattern you are looking for"

答案2

我会选择类似

tail -f log_file | grep -E "^|your_pattern"

通过打开两个标签来测试它。

首先,运行此命令

while :; do echo "$v"; ((v++)); sleep 1; done > mytest

即生成一个连续的流,每秒向文件中添加一个数字mytest

然后,在另一个选项卡中说

tail -f mytest | grep -E "^|2"

也就是说,tail文件连续并grep有两个模式:^匹配所有内容和2。这样,^匹配所有内容,使所有行都显示出来,并且2只匹配您想要突出显示的行。有关此技巧的更多信息,请参阅用高亮显示代替过滤的“Grep”

相关内容