【发布时间】:2010-02-26 00:53:22
【问题描述】:
我需要阅读 Linux 系统上的一些巨大的日志文件。日志中有很多混乱。目前我正在做这样的事情:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
但这很麻烦——每次我想添加另一个过滤器时,我都需要退出less并编辑命令行。有些过滤器比较复杂,可能是多行的。
我想要在阅读日志时应用过滤器的方法,以及将这些过滤器保存在某处的方法。
有什么工具可以帮我做到这一点吗?我无法安装新软件,所以希望它是已经安装的软件——例如,less、vi、Python 或 Perl lib 中的软件等。
将生成日志的代码更改为生成更少不是一种选择。
【问题讨论】:
-
我没有魔杖给你,但这在 serverfault.com 上可能会更好......
-
@Peter -- 好建议:serverfault.com/questions/117013/…
-
请注意,使用
cat FILE | ...启动管道被认为是不好的风格。最好是grep args < FILE | ...或只是grep args FILE | ... -
@RSK:通常我会做这样的事情,但实际上我有一堆 grep 的管道在一起,写起来似乎很愚蠢:
grep -v "OneFilter" < FILE | grep -v "AnotherUglyLongFilter" | grep -v "etc." | less...我猜只是因为它掩盖了文件名多一点。 -
其实
cat FILE | grep .. | awk ... | sort的使用风格更清晰。问题不在于风格,而在于性能,因为这样会创建更多进程并发生更多进程间通信。这对于交互式命令通常没有问题,但在脚本中应该使用更丑陋的形式。