GNU/Linux >> Znalost Linux >  >> Linux

Shoda zobrazení byla nalezena nebo nepoužívá awk

Můžete prosím zkusit následovat. V případě, že vaše awk podporuje hranice slov.

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

Upravená odpověď: následující příkaz byl testován se vstupní ukázkou poskytnutou výše a funguje podle potřeby:

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

Použil jsem znak § jako oddělovač záznamů, protože takový znak ve vstupu není a protože RS = "\0" není přenosný. Pokud máte pocit, že by se mohlo stát, že takový § může nastat ve vstupním souboru, můžete použít níže uvedené přenosné řešení:

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

Linux
  1. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  2. ifrename:příkaz nenalezen

  3. nc:příkaz nenalezen

  1. rm:příkaz nenalezen

  2. mv:příkaz nenalezen

  3. ln:příkaz nenalezen

  1. awk:příkaz nenalezen

  2. Pole v Bash nenalezeno

  3. FATAL:Chyba modulu nenalezena pomocí modprobe