I have a log file and I am trying to write a shell script to find multiple strings in a file on multiple lines. For example if I see the phrases class=com.comcast.parker.GetCurrentAudioLanguageResponse and status:OK together in the logs, I should print getAudioLanguage SUCCESSFUL else getAudioLanguage FAILED.So my shell script goes like this:logfile=$1if grep {\class\:\com.comcast.parker.GetCurrentAudioLanguageResponse\ jags.txt | grep {\status\:\OK\ | wc -l ; then    echo getAudioLanguage SUCCESSFULfiif grep {\class\:\com.comcast.parker.GetCurrentAudioLanguageResponse\ $logfile | grep -q GENERAL_ERROR | wc -l ; then    echo getAudioLanguage FAILEDfiIn the logs, I get status as GENERAL_ERROR, so it should print FAILED, but the output shows as getAudioLanguage SUCCESSFUL ..Any help regarding this?Logfile:160125-11:11:28.442500 [mod=SYS, lvl=INFO] [tid=2332] ======= Message is onRPCCall ======>160125-11:11:28.442614 [mod=SYS, lvl=INFO] [tid=2332] Entering onRPCCallEvent for request ---> getAudioLanguage160125-11:11:28.442845 [mod=SYS, lvl=INFO] [tid=2332] Received json request = {event:1,handler:1,name:onRPCCall,params:{callGUID:d75a5bab-6b29-4ab4-9f7e-3cf32d4a05b1,callParams:[{getAudioLanguage:{}}],class:com.comcast.xre.events.XRERPCCallInfo,destinationSessionGUID:ab00ebea-5f63-4619-9877-273a2bceea1d,method:getAudioLanguage,sourceSessionGUID:ab00ebea-5f63-4619-9877-273a2bceea1d},phase:STANDARD,source:1}160125-11:11:28.442920 [mod=SYS, lvl=INFO] [tid=2332] GetCurrentAudioLanguage : Entered160125-11:11:28.442968 [mod=SYS, lvl=INFO] [tid=2332] pMainPlayer is NULL.160125-11:11:28.443012 [mod=SYS, lvl=INFO] [tid=2332] getAudioLanguage: Get Audio Language returned v`>       T=     T0~t160125-11:11:28.443676 [mod=SYS, lvl=INFO] [tid=2332] ====== Response sending is {appId:1,command:CALL,commandIndex:5,method:generateAppEvent,params:[{class:com.comcast.xre.events.XREOutgoingEvent,name:onRPCReturn,params:{callGUID:d75a5bab-6b29-4ab4-9f7e-3cf32d4a05b1,class:com.comcast.xre.events.XRERPCReturnInfo,destinationSessionGUID:ab00ebea-5f63-4619-9877-273a2bceea1d,method:getAudioLanguage,returnVal:{class:com.comcast.parker.GetCurrentAudioLanguageResponse,status:GENERAL_ERROR,statusMessage:Getting Current Audio Language was unsuccessful.},sourceSessionGUID:ab00ebea-5f63-4619-9877-273a2bceea1d}},ab00ebea-5f63-4619-9877-273a2bceea1d],targetId:1,targetPath:,timestamp:0}
Need some help on grep command on shell script
linux;shell script;logs;subshell
AWK may be a bit easier to use:awk '/GetCurrentAudioLanguageResponse/ && /status\\:\GENERAL_ERROR/{ print FAIL } /GetCurrentAudioLanguageResponse/ && /status\:\OK/ {print SUCCESS}  ' log.txtIn this code we match two patterns, and if patterns match - we run what's in the curly brackets. For GetCurrentAudioLanguageResponse and status:GENERAL_ERROR we print FAIL, and for patterns GetCurrentAudioLanguageResponse and status\:\OK we print SUCCESS