Поєднайте хвіст -f із грейпом?


26

Привіт, я хочу продовжувати дивитись файл журналу, але я також не хочу бачити невідповідні речі, мене цікавить тільки що-небудь, у ньому "foobar".

Тож якби я робив підказки до файлу, я би робив

 tail file | grep "foobar"

Тепер, коли я додаю варіант -f, чи є спосіб якось показати лише те, що я хочу? використовуючи греп або іншу техніку?


1
Виявляється , ваша відповідь вже написано тут: stackoverflow.com/questions/5427483 / ...
uSlackr

1
Схоже, відповідь xyr є у питанні.
JdeBP

Відповіді:


41

Ви майже написали відповідь, а саме:

tail -f file.log | grep "foobar"

Це воно.


1
Вау, ви маєте рацію, я думаю, я не очікував, що це спрацює, я все ще не знаю, чи не повинно відбуватися прокладка труб, коли команда закінчиться виконанням? Я думаю, це показує, що це не так, це відбувається щоразу, коли є вихід, правда?
user893730

3
Ні, вона запустить дві програми паралельно, а друга (grep) вийде, як тільки STDOUT хвоста закриється. У цьому вся суть труб, передачі даних :)
Ravachol

4
Коли grepостанній рядок у трубі, його вихід буферний, тому ви бачите відфільтрований вихід у tail -fпрямому ефірі, а не затримується. Зауважте, що якби ви використовували кілька grepкоманд, будь-який, чий вихід був прокладений, знадобився б --line-bufferedваріант (припускаючи GNU або BSD grep), щоб зберегти цю поведінку.
ghoti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.