awk 处理日志
提取一段时间内的日志
[2015-12-07 03:16:49] DataHandlerUtils.Thread-0 - INFO - 1449429345:12D2300A13CA:0BBA2D85CD31:49:4
在群里一位朋友提出的问题,原先他想用正则提取。看到这个日志格式感觉用awk也能搞定这件事情。更让我感觉awk有戏能完成这件事情,有时候自己也需要类似的功能,顺道写了下面一段awk代码。思路大致是,首先是利用分隔符提取到时间,然后根据时间判断改行打不打印。
1 |
|
PRINT_INFO 的使用
某些行需要显示,某些不要显示,这样就需要一个控制标志
,最简单的方式是使用一个变量。其实也是可以不使用这个变量,把
前两个if合并到最后一个if中,这样就可以去掉 PRINT_INFO
这个变量,但是为什么不这样做呢?
- 首先,这样写让我感觉易读,结构清晰。
- 其次,如果影响PRINT_INFO值改变的原因改变了呢?这样修改就不必影响第三个if块。另外这种写法只需要关注要修改的if,是1个点。而如果三个合并在一块,没修改1个数字,自己无形中就会去关注的三个点,无形中给自己省了很多精力。
CON_VAR 的使用
一开始没有使用这个变量而是直接使用的$11
,如果时间戳编一个位置额所有出现的地方都需要修改,针对这种易变地方使用变量做了一层抽象。
awk 处理日志
http://blog.soul11201.com/2015/12/07/awk-处理日志/