#linux #unix
#linux #unix
Вопрос:
Я использую tail -f для просмотра файлов журналов в режиме «реального времени». Что сделать, чтобы иметь возможность просматривать только строки, содержащие, например, 127.0.0.1?
Ответ №1:
grep
твой друг:
tail -f foo | grep '127.0.0.1'
Ответ №2:
tail -f /path/to/log/file | grep --line-buffered 127.0.0.1
В этом случае --line-buffered
не требуется строго для grep(1)
, но это было бы, если бы вы хотели отправить выходные данные на less(1)
или некоторые другие этапы обработки, и все еще хотели видеть отдельные строки по мере их регистрации. (См. setvbuf(3)
для получения полной информации о буферизации.)
Ответ №3:
Watch также является отличной командой для этого
смотрите grep ‘127.0.0.1’ foo
и он будет обновляться каждые 2 секунды.
Комментарии:
1. 1. Однако требования к среде выполнения сильно отличаются — watch будет повторно запускать grep для всего файла каждые две секунды, в то время как tail будет выводить новые строки, подлежащие сканированию только один раз.
Ответ №4:
Если вы хотите использовать grep для всех строк, содержащих любой IP-адрес, а не только 127.0.0.1, то
tail -f filename|grep '^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$'