มันอาจเป็นปัญหาการบัฟเฟอร์ เห็นนี้โพสต์อื่น ๆ ปิดการใช้งานอัตโนมัติเมื่อใช้บัฟเฟอร์ท่อ คุณสามารถใช้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
มีให้ใน Cygwin จากexpect
ซอร์สโค้ด (เช่น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
ใน Debian ที่unbuffer
คำสั่งให้ไว้ในแพคเกจและติดตั้งเป็นexpect-dev
expect_unbuffer