如何在Linux中查看日志文件并在查看时应用自定义文件pipe理器?

(我在stackoverflow问这个问题,但这可能会更好…)

我需要通读Linux系统上的一些巨大的日志文件。 日志里有很多混乱的东西。 目前我正在做这样的事情:

cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less 

但是这很麻烦 – 每次我想添加另一个filter时,我需要退出并编辑命令行。 一些filter比较复杂,可能是多线的。

我想要一些方法来应用filter,因为我正在阅读日志,并在某处保存这些filter的方法。

有没有一个工具可以为我做这个? 我不能安装新的软件,所以希望它已经被安装 – 例如,更less,vi,Python或Perl库中的东西等等。

更改生成日志以生成更less的代码不是一个选项。

  1. 通过大日志文件读取不是一个好主意
    • 你需要先将它们过滤到必要的行然后看看它们
    • 即使如此,如果可能的话(如果过滤的线条也很多),
      你应该运行二级filter和计数脚本来分析它们
  2. 当你有一个大的静态文件,并知道filter消除它的线,
    存储过滤后的输出总是一个好主意(而不是立即查看)。
    • 这样,您可以在过滤的输出上运行二级filter,而不需要再次运行整个filter
    • 因此,在您的示例中,将第一个输出存储到一个新文件,并且当您知道另一个筛选器将其应用于该存储的文件时
    • 当然,这意味着过滤文件的一些存储空间。
      如果您的filter将大量减less实际文件,效果会更好
  3. 像' grep ', 'sed ',' AWK '这样的常规linux工具通常足以处理文本日志文件。
    我经常用这些东西处理10GB的日志文件。
    你可以用' bash scripts '来创build你自己的工具。
  4. 不要低估' vim ',它也可以处理大文件(但会花费时间,所以给它过滤的文件)

你当然不会安装它,但如果这将是一个常规的事情,你必须做,这可能是值得研究Splunk的 。 Splunk存在索引这样的大数据集,以帮助您find您正在寻找的东西。