【发布时间】:2011-02-05 14:09:18
【问题描述】:
我遇到了一个关于 egrep 和管道的奇怪问题
我尝试过滤包含一些以主题名称开头的行的流,例如 "TICK:这是一条滴答消息\n"
当我尝试使用 egrep 过滤它时: ./stream_generator | egrep 'TICK' | ./topic_processor topic_processor 似乎从来没有收到任何消息
但是,当我使用以下 python 脚本时: ./stream_generator | python filter.py --topics 勾选 | ./topic_processor 一切看起来都很好。
我想 egrep 也需要一个“刷新”机制,这是正确的吗?
这里有人可以给我一个线索吗?谢谢一百万
import sys
from optparse import OptionParser
if __name__ == '__main__':
parser = OptionParser()
parser.add_option("-m", "--topics",
action="store", type="string", dest="topics")
(opts, args) = parser.parse_args()
topics = opts.topics.split(':')
while True:
s = sys.stdin.readline()
for each in topics:
if s[0:4] == each:
sys.stdout.write(s)
sys.stdout.flush()
【问题讨论】:
-
如果你只做
./stream_generator | egrep 'TICK',你会得到什么?您是否在控制台上得到了预期的结果输出?