您好我正在尝试在日志文件中搜索以下字词,并将匹配数作为数字分配给变量。
errors
error
fail
failure
can't
但是如果它的前面是“No”
,我不想匹配错误或错误如果“无错误”则忽略错误,如果“无错误”
则忽略错误这是我到目前为止所拥有的
ErrorCheck=$(grep -vi "No errors" $LOGFILE | grep -ciE "error|fail|can't" $LOGFILE)
不幸的是,它不适合我,任何建议都会很棒。
PS我正在使用运行busybox shell的微内核,所以我有一个稍微精益的环境来工作。
欢迎所有意见和建议。
感谢您的意见。
答案 0 :(得分:0)
嗯,我认为一个问题是" -v" grep的标志基本上会省略包含' No errors'的整行。或您指定的任何其他字符串。因此,如果一行包含"没有失败"和"不能"#34;例如,您遇到了问题。
一种可能的(有点janky)方法可能是将值存储在三个不同的变量中:NUM_COUNTED减去NUM_NOTS = ErrorCheck,它应该考虑到"没有失败"和同一行中的实际故障指示器。
ShowError.aspx
或者,这似乎给出了(大多数是准确的)结果:
NUM_COUNTED=grep -ciF 'error
fail
can't' $LOGFILE
NUM_NOTS=grep -ciF 'no error
no fail' $LOGFILE
ErrorCheck=`expr $NUM_COUNTED - $NUM_NOTS`
-F标志只是告诉grep查找换行符分隔的字符串文字(错误,失败和可以' t。)
希望这有帮助。