Поэтому мне нужно следить за файлом журнала в linux, и я хотел бы отслеживать содержимое (чтобы увидеть все предыдущие записи), а также отслеживать файл журнала, одновременно используя grep для отфильтровывания материала, который я хочу видеть из журнала. , Также было бы неплохо, если бы хвост продолжался там, где команда cat перестала отображать записи.

Как бы я поступил так?

РЕДАКТИРОВАТЬ:

Чтобы сделать мой вопрос немного более понятным, вот что я хочу:

log.txt:
Line 1 <--- Starting from here is what lines I need
Line 2
Line 3
Line 4
Line 5 <--- Here is where the tail command will start displaying
Line n - 1
Line n <--- Here is where the tail command will continue to go

Я должен быть в состоянии схватить все это и понять это.

2 ответа2

3

Я не знаю, если это то, что вы ищете, но вы можете попробовать это:

grep "pattern you are looking for" log.txt;tail -n 0 -f log.txt | grep "pattern you are looking for"

он вызывает две команды одна за другой. сначала вы извлекаете интересующий вас шаблон из файла журнала, а затем запускаете tail -f в конце файла, перенаправляя вывод в grep.

однако я предлагаю вам сделать это, используя только одну команду, вы можете указать количество строк, которые будут отображаться хвостом, используя параметр -n (+1 означает в первой строке):

tail -n +1 -f log.txt | grep "pattern you are looking for"
2

Я бы пошел на что-то вроде

tail -f log_file | grep -E "^|your_pattern"

Проверьте это, открыв две вкладки.

Во первых, запустите эту команду

while :; do echo "$v"; ((v++)); sleep 1; done > mytest

То есть генерировать непрерывный поток, добавляя число каждую секунду в файл mytest

Затем в другой вкладке, скажем

tail -f mytest | grep -E "^|2"

То есть, tail непрерывно файл и grep для двух моделей: ^ соответствие всем и 2 Таким образом, ^ соответствует всему, что отображает все строки, а 2 соответствует тем строкам, которые вы хотите выделить. Больше информации об этом трюке в «Grep», который выделяет вместо фильтра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .