Хвост журналы и использовать grep для исключения определенных строк

567
Bruno

У меня есть эта строка, которая появляется каждую минуту в моем файле журнала:

2016-03-29 21:52:46,226 INFO 200 GET /api/ping (0.0.0.0) 0.34ms 

Я хочу tailэтот файл журнала, не показывая эти строки.

Я старался:

tail -f log.txt | grep -v "ping" 
-1
Вы имеете в виду, что то, что вы пытались, не работает? Sébastien VALSEMEY 8 лет назад 0
Решение было написано пару раз в контексте других команд оболочки. Вы должны искать «stdbuf» в верхнем правом углу этой веб-страницы. Gombai Sándor 8 лет назад 1
В чем проблема? Просто попробовал это на моей машине, и она работает, как ожидалось. `echo" ..GET / api / ping (0 .. "| grep -v" ping "` возвращает 1 результат без совпадений. Matt Clark 8 лет назад 0
@MattClark эхо-sthoing легко, потому что его вывод закончен и очищен. Непрерывная труба означает буферизацию, которая обычно является другом, но когда ожидание заполнения и сброса буфера означает воздействие на процесс, это ужасный враг. К счастью, его можно приручить с помощью stdbuf из нескольких вариантов. Gombai Sándor 8 лет назад 0
даже еще, `tail -n 0 -f test | grep -v "ping" `и запустить его в другом терминале` echo "..GET / api / ping (0 .." >> test` по-прежнему не приводит к выводу. Я проверял это на 4 различных дистрибутивах Unix, и Cygwin на Windows. Все ожидаемое поведение одинаково. Matt Clark 8 лет назад 0

1 ответ на вопрос

0
Rhyuk

You could do something like this:

tail -F ~/Your.log | while read LINE;do if [[ ! "$LINE" =~ "ping" ]]; then echo $LINE done fi done