gpt4 book ai didi

grep - 需要有关 grep 另一个 grep 命令输出的帮助

转载 作者:行者123 更新时间:2023-12-04 06:35:51 31 4
gpt4 key购买 nike

我有一个文件 test.log。非常大的日志文件。它有不同级别的日志记录。例如,trace , debug , info , warningerror .

显然trace级别消息只是高速发送垃圾邮件。我想在没有 trace 的情况下查看所有消息级日志。

所以我这样做了:

cat test.log | grep -v "trace"

效果很好。

现在我想根据某个关键字过滤剩余的消息 keyword1 .

所以我这样做了:
cat test.log | grep -v "trace" | grep "keyword1"

效果很好。

现在我想持续获得相同的输出,我想更换 cattail -f .
tail -f test.log | grep -v "trace" | grep "keyword1"

但这不起作用。我根本没有输出。

我究竟做错了什么?以及如何获得我想要的过滤后的“尾随”输出。

谢谢您的帮助。

(顺便说一句,我正在使用 cygwin ......如果这有任何意义的话)

最佳答案

您遇到缓冲问题:出于性能原因 grep将在其缓冲区中保留相当多的输出,并将一次性输出整个块。这意味着当从输入中读取一行时,grep一旦它读取(并让通过)更多行,就会将其发送到标准输出 - 在处理正在使用 tail -f 读入的日志文件时,这可能会在很长一段时间之后.

许多 grep变体可以切换到开启行缓冲模式,这将单独输出每一行 - 有一些性能损失。例如 GNU grep 有一个 --line-buffered 实现此效果的选项。

只需将该选项(或适用于您的 grep 版本的选项)添加到您的所有 grep调用,一旦将匹配的类似添加到日志文件中,您就会看到一些输出。

关于grep - 需要有关 grep 另一个 grep 命令输出的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890379/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com