why egrep's stdout did not go through pipe?
Posted
by ccfenix
on Stack Overflow
See other posts from Stack Overflow
or by ccfenix
Published on 2010-04-08T07:12:27Z
Indexed on
2010/04/08
7:13 UTC
Read the original article
Hit count: 367
Hi, i got a weird problem regarding egrep and pipe
I tried to filter a stream containing some lines who start with a topic name, such as "TICK:this is a tick message\n"
When I try to use egrep to filter it : ./stream_generator | egrep 'TICK' | ./topic_processor It seems that the topic_processor never receives any messages
However, when i use the following python script: ./stream_generator | python filter.py --topics TICK | ./topic_processor everything looks to be fine.
I guess there need to be a 'flush' mechanism for egrep as well, is this correct?
Can anyone here give me a clue? Thanks a million
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()
© Stack Overflow or respective owner