GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Übereinstimmung gefunden oder nicht mit awk anzeigen

Könnten Sie bitte Folgendes versuchen. Falls Ihr awk Wortgrenzen unterstützt.

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

Bearbeitete Antwort: Der folgende Befehl wurde mit dem oben bereitgestellten Eingabebeispiel getestet und funktioniert wie gewünscht:

awk '
  BEGIN { RS = "§" }
  {print (/apple/ && /mango/&&/grapes/) ? "match found" : "match not found"}
' demo.txt

Ich habe das Zeichen § verwendet als Satztrennzeichen, weil es in der Eingabe kein solches Zeichen gibt und weil RS = "\0" ist nicht tragbar. Wenn Sie das Gefühl haben, es könnte passieren, dass eine solche § in der Eingabedatei vorkommen könnte, können Sie die folgende portable Lösung verwenden:

awk '
  { i = i $0 } 
  END { print (i ~ /apple/ && i ~ /mango/ && i ~ /grapes/) ? "match found" : "match not found"}
' demo.txt

Linux
  1. Subscription-Manager:Befehl nicht gefunden

  2. dnf:Befehl nicht gefunden

  3. ln:Befehl nicht gefunden

  4. awk:Befehl nicht gefunden

  5. Array in Bash nicht gefunden

Mehrzeiliger Musterabgleich mit Sed, Awk oder Grep?

nc:Befehl nicht gefunden

aws-shell:Befehl nicht gefunden

du:Befehl nicht gefunden

rm:Befehl nicht gefunden

mv:Befehl nicht gefunden