grep --line-buffered,我可以使用第一个 grep 的结果搜索相同的缓冲区吗?

grep --line-buffered,我可以使用第一个 grep 的结果搜索相同的缓冲区吗?

我正在搜索以下格式的日志文件

<date> <connection from: ip> <new connection ID> <info> 
<date> <connection ID> <info> 

我使用以下命令来获取我的 IP,但在此日志文件中搜索我的连接 ID 需要几分钟时间。

tail -f logfile | grep ip --line-buffered 

是否可以先 grep 查找 IP,然后根据连接 ID 继续搜索?

连接 ID 不可预测,并且匹配后日志中的以下行不一定是与我的 IP 绑定的连接 ID。

答案1

不。

当你这样做时

tail -f logfile | grep "ip-address" --line-buffered 

你会仅有的获取与模式匹配的线条ip-address。此后对管道的进一步grep调用将无法看到原始日志文件中的任何其他行。

如果没有看到日志文件的一些示例,就很难(盲目地)找到可行的解决方案。

答案2

您可以在 grep 命令中使用多种模式,例如用“ip”和“连接 ID”来 grep 两行:

tail -f logfile | grep -E 'ip|connection ID' --line-buffered 

相关内容