我需要阅读Linux系统上的一些巨大的日志文件。日志中有很多混乱。目前我正在做这样的事情:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
但它很麻烦 - 每次我想添加另一个过滤器时,我都需要退出less
并编辑命令行。有些滤波器相对复杂,可能是多线的。
在我阅读日志时,我想要一些方法来应用过滤器,以及在某处保存这些过滤器的方法。
有没有可以为我做这个的工具?我无法安装新软件,所以希望它已经安装好了 - 例如,更少,vi,Python或Perl lib等等。
更改生成日志以生成更少的代码不是一种选择。
答案 0 :(得分:104)
在less。中使用&pattern
命令。
从简化的手册页
&安培;图案
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.
答案 1 :(得分:4)
尝试multitail工具 - 同时让您一次查看多个日志,我很确定它可以让您以交互方式应用正则表达式过滤器。
答案 2 :(得分:4)
根据ghostdog74's answer和less
联机帮助页,我想出了这个:
~/.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
- 查看未经过滤的日志现在这已足够,但我仍然希望能够动态编辑过滤器。
答案 3 :(得分:0)
请参阅较少的man page。例如,您可以使用一些选项来搜索单词。它也有行编辑模式。
答案 4 :(得分:0)
Casstor Software Solutions的一个名为LogFilter(www.casstor.com)的应用程序可以编辑Windows / Mac / Linux文本文件,并且可以轻松执行文件过滤。它支持多个过滤器以及正则表达式。我认为这可能是你正在寻找的东西。