1 文件处理主要使用了cat grep awk sed常用系统命令,记录下处理过程,文件名stdout.log,文件内容格式如下:
[2015-01-08 14:14:00,658] [taskExecutor-2] WARN [xxxxxxxxxxxxTask.java] - full chapter calc yellowCount=0,emptyCount=61,picCount=0,nid=21225,sort=62
[2015-01-08 14:14:00,663] [taskExecutor-1] WARN [xxxxxxxxxxxxTask.java] - full chapter calc yellowCount=0,emptyCount=0,picCount=0,nid=21223,sort=106
一: 有一job全量计算公司现有所有小说的空章数,黄章数,图章数,在更新空黄图章前打印空黄图及小说所有章节数日志,job跑完发现有极个别的空黄图数大于章节总数sort,在正常情况下不会发生这种情况,那么问题在哪呢???日志文件包含其他日志信息,日志文件大小约为1G
1 现有两个思路:
1)把日志文件down到本地,写代码,
2)利用linux系统命令
2 按照第一个思路来做,发现这个办法行不通,公司网速太慢,down不动,放弃
3 按照第二个思路来做
1)过滤日志其他日志信息
grep 'full chapter calc yellowCount' stdout.log > result.log
2)截掉日期文件名日期无用信息
cat result.log | awk '{print $10}' > result_1.log
3)把=换成,
sed "s/=/,/g" result_1.log > result_2.log(s表示替换命令,/=/表示匹配=,/,/表示把匹配替换成,,/g 表示一行上的替换所有的匹配)
4)获得空黄图大于sort值的数据
awk -F, '$2>$10 || $4>$10 || $6>$10' result_2.log > result_3.log
5)定位出异常数据并输出到result_3.log
4 结果并没发现空黄图大于sort的数据,排除程序异常的可能,接下来查看小说表异常信息sort值均已改变,这是由于章节回扫其他程序把章节sort更改了,到此找到问题所在!
5 附上耗子大神的sed,awk简明教程
sed简明教程
AWK简明教程