Potresti provare a seguire. Nel caso in cui il tuo awk supporti i confini delle parole.
awk '
/\<apple\>/{
app_found=1
}
/\<mango\>/{
mango_found=1
}
/\<grapes\>/{
grapes_found=1
}
END{
if(app_found && mango_found && grapes_found){
print "All 3 words found."
}
else{
print "All 3 words are NOT present in whole Input_file."
}
}
' Input_file
Risposta modificata: il seguente comando è stato testato con l'esempio di input fornito sopra e funziona come desiderato:
awk '
BEGIN { RS = "§" }
{print (/apple/ && /mango/&&/grapes/) ? "match found" : "match not found"}
' demo.txt
Ho usato il carattere §
come separatore di record perché non esiste un carattere di questo tipo nell'input e perché RS = "\0"
non è portatile. Se ritieni che potrebbe accadere che un tale §
potrebbe verificarsi nel file di input, puoi utilizzare la soluzione portatile di seguito:
awk '
{ i = i $0 }
END { print (i ~ /apple/ && i ~ /mango/ && i ~ /grapes/) ? "match found" : "match not found"}
' demo.txt