【问题标题】:Parse log file using grep or awk使用 grep 或 awk 解析日志文件
【发布时间】:2017-11-10 09:26:41
【问题描述】:

我有一个log file。输出示例如下所示:

... 10-MAY-95 14:16:21*(CONNECT_DATA=(SID=reltest)(CID=(PROGRAM=C:\ORAWIN\BIN\PLUS31.EXE) (HOST=WINDOWSPC)(USER=CCLOW))*(ADDRESS=(PROTOCOL=tcp)(HOST=144.25.23.246)(PORT=3366))*establish*reltest*0 ...

日志参数以如下形式输入到相应的组件配置文件中: log_parameter_component = value

因此,目标是解析上述输出并仅使用 key=value、key=value 等显示结果: log_parameter_component = value, log_parameter_component = value, etc.

解析后的结果如下:

... SID=reltest, USER=CCLOW, HOST=144.25.23.246 ...

如何解决这个任务?

【问题讨论】:

  • 为什么PROGRAM=C:\ORAWIN\BIN\PLUS31.EXE不应该出现?还是PROTOCOL=tcp ?...
  • 这只是一个例子。如果你能给出一个包含所有 key=values 的例子,那就太好了。
  • 你能说出上面的例子在输出中应该是什么样子吗?
  • SID=reltest, USER=CCLOW, HOST=144.25.23.246

标签: bash parsing awk sed grep


【解决方案1】:

这应该在perl 中工作,但我承认第二部分可能可以避免:

perl -p -e 's/.*?\(([^()]+?)=([^()]+?)\).*?/$1=$2,/g' myfile.log | perl -p -e 's/(.*),.*/$1/' 

【讨论】:

    【解决方案2】:

    Found very close soulution.

    但是,如果我想添加一些额外的模式,脚本会是什么样子?如果我将使用 awk 脚本? 前任。仅适用于:SID、USER、SERVER、HOST。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2013-03-13
      • 2011-11-04
      • 2012-04-20
      • 2022-01-25
      • 1970-01-01
      • 2013-11-26
      相关资源
      最近更新 更多