(我问stackoverflow 上的这个问题但在这里可能会更好...)
我需要阅读 Linux 系统上的一些大型日志文件。日志中有很多杂乱的内容。目前我正在做这样的事情:
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
但它很麻烦——每次我想添加另一个过滤器时,我都需要退出less
并编辑命令行。有些过滤器相对复杂,可能需要多行。
我希望有某种方式可以在阅读日志时应用过滤器,并且有一种方法可以将这些过滤器保存在某处。
有没有工具可以帮我做这个?我无法安装新软件,所以希望它是已经安装好的软件 - 例如,less、vi、Python 或 Perl 库中的某些软件等。
更改生成日志的代码以减少生成的日志不是一个选择。
答案1
- 阅读大型日志文件不是一个好主意
- 您需要先过滤出必要的行,然后查看它们
- 即使如此,如果可能的话(并且过滤的行也很多),
你应该运行二次过滤器和计数脚本来分析它们
- 当您有一个大型静态文件并且知道从中删除行的过滤器时,
存储过滤后的输出(而不是尝试立即查看它)始终是一个好主意。- 这样,您可以在过滤后的输出上运行辅助过滤器,而不需要再次对整个输出运行它们
- 因此,在您的示例中,将第一个输出存储到一个新文件,当您知道另一个过滤器时,将其应用于该存储的文件
- 当然,这意味着过滤后的文件需要一些存储空间。
如果你的过滤器能够大幅减少实际文件大小,效果会更好
- 常规 Linux 工具(如“
grep
”、'sed
“ ”、“ ”AWK
)通常足以很好地处理文本日志文件。
我经常用这些东西处理 10GB 左右的日志文件。
您可以在“ ”中用这些东西制作自己的工具bash scripts
。 - 不要低估“
vim
”,它也可以处理大文件(但需要时间,所以给它过滤文件)
答案2
你肯定不会安装这个,但如果这是你必须定期做的事情,那么可能值得研究一下Splunk。Splunk 可以索引此类大型数据集,帮助您找到所需内容。