Linux 如何grep并仅显示我希望从运行程序的输出中获得的数据?
我通过跑步知道Linux 如何grep并仅显示我希望从运行程序的输出中获得的数据?,linux,shell,Linux,Shell,我通过跑步知道 ./mycommand | grep "keywords" 在程序完成执行后,将为我找到关键字行 但是如果我的程序持续运行/循环很长时间,并且在每次循环后注销结果,我如何在终端中出现新的输出时进行grep而不需要等待它完成执行呢?为了做到这一点,最好是将mycommand的结果记录到日志文件中,类似于/var/log/mycommand_logfile.log(您的程序mycommand可能需要修改才能这样做) 然后打开一个新终端并启动以下命令: tail
./mycommand | grep "keywords"
在程序完成执行后,将为我找到关键字
行
但是如果我的程序持续运行/循环很长时间,并且在每次循环后注销结果,我如何在终端中出现新的输出时进行grep而不需要等待它完成执行呢?为了做到这一点,最好是将
mycommand
的结果记录到日志文件中,类似于/var/log/mycommand_logfile.log
(您的程序mycommand
可能需要修改才能这样做)
然后打开一个新终端并启动以下命令:
tail -f /var/log/mycommand_logfile.log | grep "keywords"
这将显示最后几行代码,它们是在mycommand执行过程中写入的。如果我理解你的意思,你应该做你想做的事情。Grep不会等待输入结束。它逐行处理它,并在遇到与它所寻找的匹配的行时生成输出 如果您发现它不是这样工作的,那么您的命令行中是否还有其他可能导致阻塞的内容?比如,如果你真的在做这样的事情:
./mycommand | sort | grep "keyword"
然后,“sort”命令将等待获得所有数据,以便在将其传递给grep之前对其进行排序
或者,问题是mycommand是一个资源密集型操作,并且以高优先级运行,因此在mycommand不再运行之前,grep不会获得任何cpu周期。我只是在这里吐痰。关键是,您的命令行做得很好。
关键字在程序执行完毕后找到。
否。感谢您提供的信息,我上次测试了它,但它不起作用,不确定原因,可能是我输入了错误的关键字。如果要挑剔,tail-f
似乎不会自动结束。