Подтвердить что ты не робот

Как просматривать файлы журналов в Linux и применять пользовательские фильтры во время просмотра?

Мне нужно прочитать некоторые гигантские файлы журналов в системе Linux. Там много беспорядка в журналах. На данный момент я делаю что-то вроде этого:

cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less

Но это громоздко - каждый раз, когда я хочу добавить еще один фильтр, мне нужно выйти из less и отредактировать командную строку. Некоторые из фильтров относительно сложны и могут быть многострочными.

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

Есть ли инструмент, который может сделать это для меня? Я не могу установить новое программное обеспечение, поэтому надеюсь, что оно уже будет установлено - например, меньше, vi, что-то в Python или Perl lib и т.д.

Изменение кода, генерирующего журнал для генерации меньше, не является вариантом.

4b9b3361

Ответ 1

Попробуйте multitail инструмент, а также дайте возможность просматривать многострочные журналы одновременно, я уверен, что он позволяет вам применять regex в интерактивном режиме.

Ответ 2

Используйте команду &pattern меньше.

Из man-страницы для менее

& шаблон

          Display  only  lines which match the pattern; lines which do not
          match the pattern are not displayed.  If pattern  is  empty  (if
          you  type  &  immediately  followed  by ENTER), any filtering is
          turned off, and all lines are displayed.  While filtering is  in
          effect,  an  ampersand  is  displayed  at  the  beginning of the
          prompt, as a reminder that some lines in the file may be hidden.

          Certain characters are special as in the / command:

          ^N or !
                 Display only lines which do NOT match the pattern.

          ^R     Don't interpret regular expression  metacharacters;  that
                 is, do a simple textual comparison.

Ответ 3

На основе ghostdog74 answer и less manpage, я придумал следующее:

~/.bashrc:

export LESSOPEN='|~/less-filter.sh %s'
export LESS=-R  # to allow ANSI colors

~/less-filter.sh:

#!/bin/sh
case "$1" in
*logfile*.log*) ~/less-filter.sed < $1
  ;;
esac

~/less-filter.sed:

/deleteLinesLikeThis/d  # to filter out lines
s/this/that/  # to change text on lines (useful to colorize using ANSI escapes)

Тогда:

  • less logfileFooBar.log.1 - применяется фильтр, который применяется автоматически.
  • cat logfileFooBar.log.1 | less - просмотр журнала без фильтрации

Это достаточно адекватно, но я все равно хотел бы иметь возможность редактировать фильтры "на лету".

Ответ 4

см. man page. есть несколько вариантов, которые вы можете использовать для поиска слов, например. Он также имеет режим редактирования линии.

Ответ 5

Там есть приложение от Casstor Software Solutions под названием LogFilter (www.casstor.com), которое может редактировать текстовые файлы Windows/Mac/Linux и может легко выполнять фильтрацию файлов. Он поддерживает несколько фильтров, а также регулярные выражения. Я думаю, это может быть то, что вы ищете.