使用grep或awk

时间:2017-06-08 15:12:02

标签: bash parsing awk sed grep

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

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这应该适用于perl,但我承认第二部分可能会被避免:

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

答案 1 :(得分:0)

Found very close soulution.

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