Kuyruk -f ile grep birleştirin?


26

Merhaba, Bir günlük dosyasına bakmaya devam etmek istiyorum, ancak alakasız şeyler görmek de istemiyorum, sadece içinde "foobar" olan bir şeyle ilgileniyorum.

Yani dosyayı takip ediyor olsaydım, yapardım.

 tail file | grep "foobar"

Şimdi -f seçeneğini ekliyorum, bir şekilde sadece istediğim şeyleri göstermenin bir yolu var mı? grep veya başka bir teknik kullanarak?


1
Cevabınız burada yazılmış gibi görünüyor: stackoverflow.com/questions/5427483/…
uSlackr

1
Xyr cevabı soruda olduğu anlaşılıyor.
JdeBP

Yanıtlar:


41

Neredeyse cevabı yazdınız:

tail -f file.log | grep "foobar"

Bu kadar.


1
Woah, haklısın, bence bunun çalışmasını beklemiyordum, hala istemiyorum, bir komutun yürütülmesi tamamlandığında boruların olması gerekmiyor mu? Sanırım bu olmadığını gösteriyor, her çıktı olduğunda oluyor, değil mi?
user893730

3
Hayır, iki programı paralel olarak başlatacak ve ikincisi (grep) kuyruğun STDOUT kapanması üzerine çıkacaktır. Boruların hepsi bu, veri akışı :)
Ravachol

4
grepBorunun son satırı ne zaman , çıktısı satır arabelleğe alınır, bu nedenle tail -fgecikmiş değil , canlı süzülmüş çıktısını görürsünüz . Birden fazla grepkomut kullanacak olursanız , çıktısı borulu olan herhangi birinin --line-bufferedbu davranışı sürdürmek için bir seçeneğe (GNU veya BSD grep varsayarak) ihtiyacı olacağını unutmayın .
ghoti
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.