+ -
当前位置:首页 → 问答吧 → 关于文本检索问题(已解决,大家可以来学习一下)

关于文本检索问题(已解决,大家可以来学习一下)

时间:2011-06-30

来源:互联网

本帖最后由 caoshaocong 于 2011-06-30 11:39 编辑

我写了个shell 作用为检查/root/test.log 里面是否含有 错误 失败 ERROR error Error 等字符  用的if -n参数来判断如果非空就说明有这个词   就提示错误,用-o来实现多个词检测,但是我发现这样如果错误关键词增加的情况下 if 检测语句会越来越长
本来想弄个变量 TEST="错误 失败 ERROR error Error" 来检测 但是不知道怎么逐词读取
请大家帮忙 怎么优化一下我的代码。


shell如下:
SERVERLOG="/root/test.log"
if [ -n "`cat $SERVERLOG |grep '失败'`" -o -n "`cat $SERVERLOG |grep '错误'`" -o -n "`cat $SERVERLOG |grep 'Error'`" -o -n "`cat $SERVERLOG |grep 'ERROR'`" -o -n "`cat $SERVERLOG |grep 'error'`"];then
    echo "检测到有错误"
else
    echo "没有检测到错误"
fi

作者: caoshaocong   发布时间: 2011-06-30

整个数组,然后遍历就行了

作者: jieao111   发布时间: 2011-06-30

回复 caoshaocong


    -n `grep -P 'error|Error|ERROR'`

作者: liion631818   发布时间: 2011-06-30

SERVERLOG="/root/test.log"
if grep -qEi '失败|错误|error' $SERVERLOG
then
    echo "检测到有错误"
else
    echo "没有检测到错误"
fi

作者: ly5066113   发布时间: 2011-06-30