如何在Linux中查看日志文件并在查看时应用自定义filter?
我需要通读Linux系统上的一些巨大的日志文件。 日志里有很多混乱的东西。 目前我正在做这样的事情:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
但是这很麻烦 – 每次我想添加另一个filter时,我需要退出并编辑命令行。 一些filter比较复杂,可能是多线的。
我想要一些方法来应用filter,因为我正在阅读日志,并在某处保存这些filter的方法。
有没有一个工具可以为我做这个? 我不能安装新的软件,所以希望它已经被安装 – 例如,更less,vi,在Python或Perl库等等。
更改生成日志以生成更less的代码不是一个选项。
尝试multitail工具 – 以及让你一次查看multile日志,我敢肯定,它可以让你交互应用正则expression式filter。
使用&pattern
命令内less。
从手册页less
&模式
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.
基于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
– 应用自动应用filter。 -
cat logfileFooBar.log.1 | less
cat logfileFooBar.log.1 | less
– 查看日志没有过滤
现在已经足够了,但我仍然希望能够即时编辑filter。
看到less的手册页 。 有一些选项可以用来search单词。 它也有行编辑模式。
Casstor软件解决scheme有一个名为LogFilter(www.casstor.com)的应用程序,可以编辑Windows / Mac / Linux文本文件,并且可以轻松地执行文件过滤。 它支持多个filter以及正则expression式。 我想这可能是你要找的。