ฉันใช้ ffmpeg เพื่อรับข้อมูลเมตาของคลิปเสียง แต่ฉันไม่สามารถ grep มัน
    $ ffmpeg -i 01-Daemon.mp3  |grep -i Duration
    FFmpeg version SVN-r15261, Copyright (c) 2000-2008 Fabrice Bellard, et al.
      configuration: --prefix=/usr --bindir=/usr/bin 
      --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib
      --mandir=/usr/share/man --arch=i386 --extra-cflags=-O2 
      ...
ฉันตรวจสอบเอาต์พุต ffmpeg นี้โดยตรงไปที่ stderr
$ ffmpeg -i 01-Daemon.mp3 2> /dev/null
ดังนั้นฉันคิดว่า grep ไม่สามารถอ่านสตรีมข้อผิดพลาดเพื่อตรวจจับเส้นที่ตรงกันได้ เราจะเปิดใช้งาน grep เพื่ออ่านสตรีมข้อผิดพลาดได้อย่างไร?
การใช้ลิงก์nixCraftฉันเปลี่ยนเส้นทางสตรีมข้อผิดพลาดมาตรฐานไปยังสตรีมเอาต์พุตมาตรฐานจากนั้น grep ทำงาน
$ ffmpeg -i 01-Daemon.mp3 2>&1 | grep -i Duration
  Duration: 01:15:12.33, start: 0.000000, bitrate: 64 kb/s
แต่ถ้าเราไม่ต้องการเปลี่ยนเส้นทาง stderr ไปเป็น stdout ล่ะ?
grepสามารถทำงานได้บน stdin เท่านั้น เป็นไพพ์ที่สร้างขึ้นโดยเชลล์ที่เชื่อมต่อ stdin ของ grep กับ stdout ของคำสั่งอื่น และเชลล์สามารถเชื่อมต่อ stdout กับ stdin เท่านั้น
                
grepสามารถใช้งานได้บน stdout เท่านั้น (แม้ว่าฉันจะไม่สามารถหาแหล่งที่มาแบบบัญญัติเพื่อสำรองข้อมูลได้) ซึ่งหมายความว่าสตรีมใด ๆ จำเป็นต้องแปลงเป็น stdout ก่อน