如何在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式。 我想这可能是你要找的。