背景:还是因为最近压测,要判定设备是否存在crash,grep crash之后,但是总有一些其他关键词的干扰,例如:crash_event,no crash等,所以梅开二度,再次修改脚本,来一个完整判断。话不多说,上代码~
str=$(cat F2_logcat.log | grep -i "fatal" | grep -v "fatal_events")
if [[ $str != "" ]]
then
echo "$str" >> error.txt
echo "\033[31m天亮请睁眼,昨晚你被Crash了!!!\033[0m"
let "FAIL++"
else
echo '恭喜你!昨晚是平安夜~~~'
let "PASS++"
fi
1、先来说grep多重过滤
很多细节就不在这里展开了,可以自行--help,说几个常用的,grep操作默认是区分大小写的
- -i 或 --ignore-case : 忽略字符大小写的差别。
- -v 或 --invert-match : 显示不包含匹配文本的所有行
(base) ➜ 1 cat logcat.log
1 a
2 ab
3 aabb
4 aabbcc
5 AB
6 AbC
7 abc
8 ABCd%
(base) ➜ 1 cat logcat.log | grep ab
2 ab
3 aabb
4 aabbcc
7 abc
(base) ➜ 1 cat logcat.log | grep -i ab
2 ab
3 aabb
4 aabbcc
5 AB
6 AbC
7 abc
8 ABCd
(base) ➜ 1 cat logcat.log | grep -v ab
1 a
5 AB
6 AbC
8 ABCd
(base) ➜ 1 cat logcat.log | grep -i ab | grep -v abc
2 ab
3 aabb
4 aabbcc
5 AB
6 AbC
8 ABCd
这个结果一目了然,就不用过多解释了,再说一下或和与的操作
1)grep匹配ab,bc,ac任一个字符即可
(base) ➜ 1 cat logcat.log | grep "ab\|bc\|ac"
2 ab
3 aabb
4 aabbcc
7 abc
2) grep匹配ab,bc,必须同时满足才匹配
(base) ➜ 1 cat logcat.log | grep ab | grep bc
4 aabbcc
7 abc
2、echo输出红色字符
Linux输出带颜色的字符,格式如下,用的最多的就是红色,颜色配置表格我就不贴出来了
echo \033[显示方式;前景色;背景色m
其中\033是ESC健的八进制,\033[即告诉终端后面是设置颜色的参数,显示方式,前景色,背景色均是数字
# 替换代码中的汉字就可以直接运行了,不用添加'
echo "\033[31m红色文字\033[0m"
echo "\033[32m绿色文字\033[0m"
echo "\033[33m黄色文字\033[0m"
该博客讲述了在进行设备稳定性测试时,如何通过grep命令结合-i和-v选项来过滤日志中关于'fatal'的错误信息,同时排除'crash_event'和'nocrash'等关键词。作者给出了具体的操作示例,并展示了如何通过管道符实现多条件过滤。此外,还介绍了如何利用echo输出红色警告信息。
3825

被折叠的 条评论
为什么被折叠?



