2007年11月9日 星期五

AWK小簡介 一個log的分析

AWK是一個很好用的指令喔

這個是一小段的Netbackup log file

cat logfile
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 01:44:29
0 NPACDB_local ORA_NPACDB_LOG Sch_ORA_NP BCSPBS01 10/23/2007 01:44:39
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 03:54:52
0 NPACDB_local ORA_NPACDB_LOG Sch_ORA_NP BCSPBS01 10/23/2007 03:55:11
96 BCSPBS01 FS_BCSPBS01 Sch_FS_BCS BCSPBS01 10/23/2007 05:15:11
(unable to allocate new media for backup, storage unit has none available)
96 BCSPBS01 FS_BCSPBS01 Sch_FS_BCS BCSPBS01 10/23/2007 05:15:12
(unable to allocate new media for backup, storage unit has none available)
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 06:05:21
0 NPACDB_local ORA_NPACDB_LOG Sch_ORA_NP BCSPBS01 10/23/2007 06:05:39
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 08:15:28
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 08:16:14
0 NPACDB_local ORA_NPACDB_LOG Sch_ORA_NP BCSPBS01 10/23/2007 08:16:25
0 NPACDB_local EXP_NPACDB Sch_EXP_NP BCSPBS01 10/23/2007 09:55:51
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 10:25:56
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 10:26:46
0 NPACDB_local ORA_NPACDB_LOG Sch_ORA_NP BCSPBS01 10/23/2007 10:27:03
196 BCSPBS01 FS_BCSPBS01 Sch_FS_BCS BCSPBS01 10/23/2007 11:15:31
(client backup was not attempted because backup window closed)
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 12:35:54
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 12:36:49
0 NPACDB_local ORA_NPACDB_LOG Sch_ORA_NP BCSPBS01 10/23/2007 12:36:55
0 NPACDB_local ORA_NPACDB_LOG Default-Ap BCSPBS01 10/23/2007 14:35:28

事件 第一個格子是代表成功失敗
0 為成功 其他為失敗

條件
1 行中有 Default-Ap 為程序自已起來的 必須不計算
2 想要計算有多少成功的
3 想要計算有多少失敗的
4 失敗重式的部份不計算

主要用在有一個特定格式 很象excel的統計 分析功能
這個要怎麼作呢

想法:
1 先排除怪怪的行數
(client backup was not attempted because backup window closed)
那種前面沒有帶數字的 要先排除
2 排除 Default-Ap
條件1 所提及的部份
3 條件4是比較討厭一點的部份


從: 來判別 分左邊及右邊
gawk -F: "!/Default-Ap/&&!/\(/{if ($1!=y)print $0; y=$1}" logfile
再度給| 符號接下去作剩下的處理
| gawk "{if($1==0){s++}else{f++}}END{print s,f}"

合在一起寫
gawk -F: "!/Default-Ap/&&!/\(/{if ($1!=y)print $0; y=$1}" logfile | gawk "{if($1==0){s++}else{f++}}END{print s,f}"

沒有留言:

RHEL install EPEL

  https://www.linuxtechi.com/install-epel-repo-on-rhel-system/ EPEL dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest...