2017-06-08 30 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。