2017-06-08 34 views
-1

我有一个log file。输出的示例是这样的:使用grep或awk解析日志文件

... 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

所以,目标是要分析上面的输出,并仅与显示结果键=值,键=值,等: log_parameter_component = value, log_parameter_component = value, etc.

结果应该为解析后如下:

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

如何解决此任务?

+0

为什么'PROGRAM = C:\ ORAWIN \ BIN \ PLUS31.EXE'不应该出现?或'PROTOCOL = tcp'?... – xiawi

+0

这只是一个例子。如果你可以用所有key =值给出一个例子,那将是非常好的。 – kurgulus

+0

你能告诉我们上面的例子应该如何在输出中看起来像吗? – skr

回答

0

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

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

Found very close soulution.

但是,脚本是如何将看起来像如果我想添加一些额外的模式?如果我将使用awk脚本?例如,仅适用于:SID,USER,SERVER,HOST。