यह शायद एक बफरिंग मुद्दा है। पाइप का उपयोग करते समय ऑटो-बफरिंग को अक्षम करने पर इस एसओ पोस्ट को देखें । आप unbuffer
से कमांड का उपयोग कर सकते हैं expect
:
$ unbuffer tail -f log.txt | egrep 'WARN|ERROR' | tee filtered_output.txt
संपादित करें : चूंकि आपके पास एक लंबी पाइपलाइन है, इसलिए आपको संभवतः प्रत्येक कमांड को अनबफर करने की आवश्यकता है (अंतिम को छोड़कर):
$ unbuffer tail -f log.txt | unbuffer egrep 'WARN|ERROR' | tee filtered_output.txt
संपादित 2 : स्रोत पैकेज से साइगविनunbuffer
पर उपलब्ध है expect
(उदाहरण के लिए -20030128-1-src.tar.bz2 , expect/examples
फ़ोल्डर में पाया गया ), लेकिन यह एक बहुत छोटी स्क्रिप्ट है। यदि आपके पास expect
पैकेज पहले से स्थापित है, तो बस इसे unbuffer
अपनी /usr/local/bin
निर्देशिका में लिखी गई स्क्रिप्ट में डालें :
#!/usr/bin/expect --
# Description: unbuffer stdout of a program
# Author: Don Libes, NIST
eval spawn -noecho $argv
set timeout -1
expect
डेबियन पर, unbuffer
कमांड expect-dev
पैकेज में प्रदान की जाती है और इसे स्थापित किया जाता है expect_unbuffer
।