GNU/Linux >> Tutoriels Linux >  >> Linux

Afficher la correspondance trouvée ou non en utilisant awk

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

Linux
  1. ifrename :commande introuvable

  2. ln :commande introuvable

  3. awk :commande introuvable

  4. commande introuvable lors de l'utilisation de sudo

  5. Utiliser grep contre awk

aws-shell :commande introuvable

du :commande introuvable

rm :commande introuvable

mv :commande introuvable

Tableau dans Bash introuvable

FATAL :erreur de module introuvable à l'aide de modprobe