I have a build log file. I need to find if build failed or not .The log will have only "Build exited with errorcode 0" if it is passed. Now what I am looking for in the log file is regex similar to this "Build exited with errorcode *", where * could be any return value except zero. If substring is found , the build has failed
For example:
- If "Build exited with errorcode 0" is found then build passed.
- If both "Build exited with errorcode 0", "Build exited with errorcode 1" , then build failed
It could be really done in python or other language but I am looking to do it terminal through regex.
CodePudding user response:
if grep -Eq 'Build exited with errorcode ([^0]|[^[:space:]]{2,})' logfile; then
echo build failed
else
echo build passed
fi
This will print build failed, if the log file contains any instance of the above string, where the word after errorcode is anything other than a single zero. If you want build failed for anything other than one or more zeroes, you could instead use: grep -q 'Build exited with errorcode [^[:space:]]*[^0][^[:space:]]*'.
Note that in either case, even a period in the logfile (Build exited with errorcode 0.) would print 'failed'.
In other words, all instances of this string must be Build exited with errorcode 0 for passed (or up to multiple zeroes for the second example, like 000 or 0).
CodePudding user response:
document content:
mm,bn,hello,ssdenl.
sdfsdf,dfdf,dfdfe,ggg.
sdfd,gfgf
dfdfgfgdfgsdfgsdfg
dfgfdg,sdfsdfdhello.sdfasdfas/
sdfsdfdfgdfgdsfhellosdfasdfasdf
sdfasdfdfgffghjdkfjglfdg
Look for the "hello" field
^(?!.*hello).*$
