shell – 用sed或grep解析日志
我想从这种日志中获取数据.
实现了这个,它给了我URL.但不适用于“TAIL -F”,以便我可以直接监控网址.
请建议或加强 解决方法
我希望你的多个sed脚本可以使用tail -F输出,而不是你想象的那样.
C标准IO库将执行缓冲以提高性能. IO库可以执行(a)无缓冲(b)行缓冲(c)块缓冲.如果输出到达终端,则通常选择行缓冲.但是如果输出转到文件或管道,则通常选择块缓冲. (它比这更复杂 – 如果有问题的文件描述符用于stdout或stderr或其他文件,行为会发生变化.有关详细信息,请参阅setvbuf(3).) 因此,虽然您现在看到的块缓冲可能对性能更好,但它确实意味着您可以在看到任何输出之前等待一段时间,因为每个命令最终会累积一个数据块.至少grep(1)允许–line-buffered命令行选项使用行缓冲 – 而sed(1)允许–unbuffered命令行选项更频繁地刷新输出缓冲区.试试这个: tail -f /var/log/system.log | grep --line-buffered "query=" | sed -u -e "s/.*query=//" | sed -u -e "s/"//g" | sed -u -e "s/.$/ /" (我没有找到tail(1)的任何类似选项,但即使它向其他人发送数据块,对grep(1)和sed(1)的更改也会有很大的帮助.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |