因此,我需要在 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”。