รวมหาง -f กับ grep หรือไม่


26

สวัสดีฉันอยากดูไฟล์บันทึกต่อไป แต่ฉันก็ไม่อยากเห็นสิ่งที่ไม่เกี่ยวข้องฉันแค่สนใจอะไรก็ตามที่มี "foobar" อยู่ในนั้น

ดังนั้นถ้าฉันปรับแต่งไฟล์ฉันจะทำ

 tail file | grep "foobar"

ตอนนี้ฉันเพิ่มตัวเลือก -f แล้วมีวิธีที่จะแสดงเฉพาะสิ่งที่ฉันต้องการหรือไม่? ใช้ grep หรือเทคนิคอื่น ๆ


1
ดูเหมือนว่าคำตอบของคุณเขียนไว้แล้วที่นี่: stackoverflow.com/questions/5427483/…
uSlackr

1
ดูเหมือนว่าคำตอบ xyr อยู่ในคำถาม
JdeBP

คำตอบ:


41

คุณเกือบเขียนคำตอบซึ่งก็คือ:

tail -f file.log | grep "foobar"

แค่นั้นแหละ.


1
ว้าวคุณพูดถูกฉันคิดว่าฉันไม่ได้คาดหวังว่ามันจะใช้งานได้ แต่ฉันก็ยังทำไม่ได้ ฉันเดาว่านี่แสดงว่ามันไม่เกิดขึ้นทุกครั้งที่มีเอาต์พุตใช่ไหม
893730

3
ไม่จะเปิดตัวสองโปรแกรมพร้อมกันและรายการที่สอง (grep) จะออกทันทีที่ STDOUT ของหางปิด นั่นเป็นจุดรวมของท่อข้อมูลสตรีมมิ่ง :)
ราวโคล

4
เมื่อgrepเป็นบรรทัดสุดท้ายในไพพ์เอาต์พุตของมันจะเป็นบัฟเฟอร์บรรทัดดังนั้นคุณจะเห็นเอาต์พุตที่กรองแล้วของการtail -fถ่ายทอดสดแทนที่จะล่าช้า โปรดทราบว่าหากคุณต้องใช้หลายgrepคำสั่งใด ๆ ที่มีการส่งออก piped จะต้องมี--line-bufferedตัวเลือก (สมมติว่า grep GNU หรือ BSD) เพื่อให้พฤติกรรมนี้
ghoti
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.