Я должен прочитать некоторые гигантские файлы журнала в системе Linux. Существует большая помеха в журналах. В данный момент я делаю что-то вроде этого:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
Но это является громоздким - каждый раз, когда я хочу добавить другой фильтр, я должен выйти less
и отредактируйте командную строку. Некоторые фильтры являются относительно сложными и могут быть мультилинией.
Я хотел бы некоторый способ применить фильтры, поскольку я прочитываю журнал и способ сохранить эти фильтры где-нибудь.
Существует ли инструмент, который может сделать это для меня? Я не могу установить новое программное обеспечение так, надо надеяться, это - что-то, что было бы уже установлено - например, меньше, vi, что-то в Python или lib Perl, и т.д.
Изменение кода, который генерирует журнал для генерации меньшего, не является опцией.
Попробуйте инструмент multitail - он позволяет вам не только просматривать сразу несколько журналов, но и применять регулярное выражение. фильтрует в интерактивном режиме.
Никто на самом деле не упомянул, что операторы сравнения, реализованные во всех компьютерах, сравнивают только две вещи за один раз - если компьютер может сравнивать сразу три объекта, это, безусловно, будет иметь смысл.
В нынешнем виде для сравнения трех значений требуется (по крайней мере) две операции.
-121--2907159-Просто просмотрите последовательность, создав int как обычно, но игнорируйте нечисловые символы:
int res = 0;
for (int i=0; i < str.length(); i++) {
char c = s.charAt(i);
if (c < '0' || c > '9') continue;
res = res * 10 + (c - '0');
}
-121--1397851- см. справочную страницу . Есть некоторые варианты, которые можно использовать, например, для поиска слов. Он также имеет режим редактирования строк.
Основываясь на ответе ghostdog74 и 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
-- чтобы увидеть журнал без фильтрацииПока этого достаточно, но я бы хотел иметь возможность редактировать фильтры на лету.