Оберіть кілька файлів, прокладаючи один із файлів через grep


4

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

tail -f file1 file2|grep mySearch

Проблема з цим полягає в тому, що обидва файли запускаються через grep, а точніше, вихід хвоста виконується через grep. Тільки file2 має бути відфільтрований за допомогою функції mySearch. Будь-які ідеї?

Я спробував назвати труби, заміни процесів і складені команди.

Відповіді:


1

чи можна запустити два хвости у фоновому режимі, піддаючи відфільтрований та нефільтрований вихід у темп-файл.

Потім використовуйте цей темп-файл як джерело для того, що вам потрібно зробити -

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


do something with temp now

Схоже, другий рядок у вашому рішенні (рядок із грепом) не працює. Якщо я забиваю лише один файл і стискаю хвіст і надсилаю його до файлу у фоновому режимі - а потім обробляють тимчасовий файл - тимчасовий файл ніколи не записується. Будь-які пропозиції.
Брайан

1
Зрозумів це - довелося додати - рядок з буфером до моєї заяви про греп. Але зараз у мене є різні проблеми - наприклад, коли моє з'єднання закривається, хвіст все ще працює на сервері, хоча я даю опцію -t для ssh. Крім того, схоже, що вихід із файлу журналу, який було зібрано, вставляється двічі. Дякую за допомогу.
Брайан

Ніколи не пам’ятайте, що я говорив про процеси, що зависають. Це повинно бути з попереднього тестування.
Брайан

Отже, який зараз статус?
Брайан

Це команда, в якій я закінчився: (tail -f ~ / file1 >> temp &); (хвіст -f file2 | grep - завантажений рядок mySearch >> temp &); Хвіст -f temp мені потрібно було використовувати --line-buferi, щоб змусити його працювати. Дякую.
Брайан

2

Тут досить декількох способів скинути кішку. Мій особистий улюблений за весь час - MultiTail . Він надає безліч способів налаштування та відображення виводу з файлів, а також низку способів фільтрації цього виводу за допомогою регулярного вираження. Наприклад, ви можете відфільтрувати 1 файл, залишивши 4 зміни незмінними. Ви також можете зробити зворотний фільтр, як і grep -v.

Сторінку прикладних команд можна знайти на веб- сайті http://www.vanheusden.com/multitail/examples.html

Можливо, вам також сподобаються деякі скріншоти цього в дії. Кілька вікон керуються ncurses.

Якщо ви такий тип програмування, як я, ви можете створити персоналізоване рішення з чимось поряд з модулем Файл :: Tail Perl, використовуючи selectна окремих ручках.


1

Багатоповерхівка звучить як те, що мені потрібно.

Це те, що я робив, що добре, за винятком того, що рядки журналів не в точному часовому порядку.

------------- 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:|"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.