怎样用shell查出日志文件中记录的错误日志的次数(多关键字)


如题,比如我要在日志文件a.log中查找ERROR1和ERROR2分别出现的次数。

要求:用一行shell解决。

awk sed shell

Sevion 11 years, 6 months ago

下面的命令:


 grep -o -E 'ERROR[12]'| sort | uniq -c

grep -o仅输出匹配的内容,这里就是ERROR1或者ERROR2,然后用sort/uniq统计出现的个数。

更新:下面这种方法相对死板,没有grep+awk灵活。

哈,顺着依云同学的答案,如果使用awk,那可以连grep命令也可以不用。我们来试试,下面是测试的文件:


 # cat /tmp/a.log
ERROR1
ERROR1
ERROR1ERROR1
ERROR
ERROR2ERROR1
ERROR1
ERROR2
ERROR2
ERROR2
ERROR3

awk命令:


 awk '/ERROR[12]/ { 
        err1_cnt+=gsub(/ERROR1/, "");
        err2_cnt+=gsub(/ERROR2/, ""); 
    } 

    END { 
        print err1_cnt, err2_cnt;
    }' /tmp/a.log

执行结果:


 6 4

奔放D小蘑菇 answered 11 years, 6 months ago

Your Answer