Pourriez-vous s'il vous plaît essayer de suivre. Au cas où votre awk prend en charge les limites de mots.
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
Réponse modifiée : la commande suivante a été testée avec l'exemple d'entrée fourni ci-dessus et fonctionne comme vous le souhaitez :
awk '
BEGIN { RS = "§" }
{print (/apple/ && /mango/&&/grapes/) ? "match found" : "match not found"}
' demo.txt
J'ai utilisé le caractère §
comme séparateur d'enregistrement car il n'y a pas un tel caractère dans l'entrée et parce que RS = "\0"
n'est pas transportable. Si vous pensez qu'il pourrait arriver qu'un tel §
pourrait se produire dans le fichier d'entrée, vous pouvez utiliser la solution portable ci-dessous :
awk '
{ i = i $0 }
END { print (i ~ /apple/ && i ~ /mango/ && i ~ /grapes/) ? "match found" : "match not found"}
' demo.txt