GNU/Linux >> Tutoriales Linux >  >> Linux

Mostrar coincidencia encontrada o no usando awk

¿Podría por favor tratar de seguir. En caso de que su awk admita límites de palabras.

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

Respuesta editada: el siguiente comando se ha probado con el ejemplo de entrada proporcionado anteriormente y funciona como se desea:

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

Usé el carácter § como separador de registros porque no hay tal carácter en la entrada y porque RS = "\0" no es portátil. Si cree que podría suceder que tal § podría ocurrir en el archivo de entrada, puede usar la solución portátil a continuación:

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

Linux
  1. administrador de suscripciones:comando no encontrado

  2. dnf:comando no encontrado

  3. id:comando no encontrado

  4. último:comando no encontrado

  5. w:comando no encontrado

¿Coincidencia de patrones multilínea usando Sed, Awk o Grep?

ifrename:comando no encontrado

nc:comando no encontrado

aws-shell:comando no encontrado

Matriz en Bash no encontrada

Usando grep vs awk