+ -
当前位置:首页 → 问答吧 → 请教大虾们一个shell编程的问题!

请教大虾们一个shell编程的问题!

时间:2011-03-18

来源:互联网

主要是如何从一个已知文本文件a.txt里取出自己想要的信息。

a.txt的内容:
。。。
a-000
3月17日
ok=0
ok=111
ok=0

a-000
3月18日
ok=0
ok=0
ok=0

a-000
3月19日
ok=210
ok=333
ok=91



a.txt实际是个日志文件,我想取出最近一天的系统运行数据,要能计算出ok=0出现几次,ok<>0出现几次
请大虾们不吝赐教,谢谢!

作者: lon3991   发布时间: 2011-03-18

#! /bin/bash
big=0
small=0
equ=0
for i in `tail -3 a.txt|cut -f2 -d"="`;do
(($i > 0))&&let big=big+1
(($i < 0))&&let small=small+1
(($i == 0))&&let equ=equ+1
done
echo $big
echo $small
echo $equ

作者: 昭襄王   发布时间: 2011-03-18

回复 昭襄王

结果是:
./test.sh: line 6: ((: 23:00:10 > 0: syntax error in expression (error token is ":00:10 > 0")
./test.sh: line 7: ((: 23:00:10 < 0: syntax error in expression (error token is ":00:10 < 0")
./test.sh: line 8: ((: 23:00:10 == 0: syntax error in expression (error token is ":00:10 == 0")
./test.sh: line 6: ((: !! > 0: syntax error: operand expected (error token is "> 0")
./test.sh: line 7: ((: !! < 0: syntax error: operand expected (error token is "< 0")
./test.sh: line 8: ((: !! == 0: syntax error: operand expected (error token is "== 0")
3
0
5

作者: lon3991   发布时间: 2011-03-18

回复 lon3991


    给出真实的原始文件

作者: 昭襄王   发布时间: 2011-03-18

回复 昭襄王


    这是真实a.txt的最后一大段:

..........省略几万字
开始......完成!

Connected to ORACLE !

开始......完成!
Mon Oct 25 23:00:11 CST 2010
rj finished !!
rj start !!
Tue Oct 26 23:00:01 CST 2010

Connected to ORACLE !

开始......完成!
oiErr=0

开始......非月结日!

ERROR=2102

Connected to ORACLE !

开始......完成!
oiErr=2108,23:00:08   

开始......结束!
oiErr=2108,23:00:08   

开始......完成!
oiErr=0,23:00:08   

开始......完成!
oiErr=0,23:00:08   

开始......完成!
oiErr=0,23:00:09   

开始......完成!
oiErr=0,23:00:09   

Connected to ORACLE !

开始切换日结日期......完成!返回结果oiErr 0! 当前日结日期为 20101027

Connected to ORACLE !

开始......完成!

开始......完成!

Connected to ORACLE !

开始......失败 ERROR=4520
Tue Oct 26 23:00:10 CST 2010
rj finished !!
rj start !!
Wed Oct 27 23:00:01 CST 2010

Connected to ORACLE !

开始......完成!
oiErr=0

开始......非月结日!

ERROR=2102

Connected to ORACLE !

开始......完成!
oiErr=2108,23:00:08   

开始......结束!
oiErr=2108,23:00:08   

开始......完成!
oiErr=0,23:00:08   

开始......完成!
oiErr=0,23:00:08   

开始......完成!
oiErr=0,23:00:09   

开始......完成!
oiErr=0,23:00:09   

Connected to ORACLE !

开始切换日结日期......完成!返回结果oiErr 0! 当前日结日期为 20101028

Connected to ORACLE !

开始......完成!

开始......完成!

Connected to ORACLE !

开始......失败 ERROR=4520
Wed Oct 27 23:00:10 CST 2010
rj finished !!



---------------------------------------------------------

我想统计最近一个"rj start !!"后,总共出现了几次oiErr=0,几次ERROR=,
并把结果写入b.log,而且要写入rj start !!这行下的那行开始时间,写入rj finished !!上的那行结束时间

作者: lon3991   发布时间: 2011-03-18

我就知道会是添油式问题,这和你顶楼的问题完全不一样啊

作者: 昭襄王   发布时间: 2011-03-18

在2楼的基础上我是这样做的,运行通过。


#! /bin/bash
equ=0
for i in `tail -47 a.txt`;do
if [ `expr substr "$i" 1 7` = "oiErr=0" ]
then
let equ=equ+1
fi
done
echo $equ>b.log

作者: lon3991   发布时间: 2011-03-18

热门下载

更多