Хвост несколько файлов при передаче по каналу одного из файлов через grep

Я хочу использовать хвост, следуют за двумя файлами журнала, но один из файлов журнала имеет слишком много данных, таким образом, я хочу фильтрованный с grep.

tail -f file1 file2|grep mySearch

Проблема с этим - то, что оба файла выполняются через grep, или скорее вывод хвоста пробегается grep. Только file2 должен быть фильтрован с grep mySearch. Какие-либо идеи?

Я попробовал именованные каналы, обрабатываю замены и соединяю команды.

4
задан 01.08.2014, 19:08

3 ответа

можно ли выполнить эти два хвоста в фоновом режиме, передав фильтрованный и нефильтрованный вывод по каналу во временный файл.

Затем используйте тот временный файл в качестве источника для того, в чем Вы нуждаетесь к DOS -

tail -f file1 >> temp &
tail -f file2 | grep mySearch >> temp &


do something with temp now
1
ответ дан 07.12.2019, 20:46

Довольно много способов освежевать кошку здесь. Мое персональное самое любимое, хотя MultiTail. Это обеспечивает несметное число способов настроить и отобразить вывод из файлов, а также диапазон способов отфильтровать тот вывод через regex. Можно отфильтровать 1 файл, например, при оставлении еще 4 без изменений. Можно сделать обратный фильтр также, точно так же, как a grep -v.

Страница команд в качестве примера может быть найдена по http://www.vanheusden.com/multitail/examples.html

Можно также понравиться некоторые снимки экрана его в действии. Несколькими окнами управляет ncurses.

Если Вы - тип программирования как я, можно создать персонализированное решение с чем-то вроде использования модуля File::Tail Perl select на отдельных дескрипторах.

2
ответ дан 07.12.2019, 20:46

Звуки мультихвоста точно так же, как то, в чем я нуждаюсь.

Это - что-то, что я делал, который прекрасен за исключением того, что строки журнала не находятся в точном временном порядке..

-------------8 <-------------

#!/bin/bash

function pidof_prog_file() {
 PGM=$1
 FIL=$2
 lsof -n 2>/dev/null| grep "${PGM}.*${FIL}" | tr -s ' ' | cut -d' ' -f 2
 }

T="tail -n 10 -f"

kill -TERM `pidof_prog_file tail application.log`
$T /var/www/protected/runtime/application.log | tr '\t' ' ' | tr -s ' ' | sed "s|^|PHP:|" &

kill -TERM `pidof_prog_file tail access.log`
$T /var/log/apache2/access.log | tr '\t' ' ' | tr -s ' ' | sed "s|^|HTTP:|" &

kill -TERM `pidof_prog_file tail catalina.out`
$T /var/log/tomcat6/catalina.out  | tr '\t' ' ' | tr -s ' ' | sed "s|^|JAVA:|" &

kill -TERM `pidof_prog_file ssh devj-db`
sudo -u $ME ssh $dbhost "$T /var/log/mysql/query.log"  | tr '\t' ' ' | tr -s ' ' | sed "s|^|SQL:|"
1
ответ дан 07.12.2019, 20:46

Теги

Похожие вопросы