GNU/Linux >> Belajar Linux >  >> Linux

Tampilan cocok ditemukan atau tidak menggunakan awk

Bisakah Anda mencoba mengikuti. Seandainya awk Anda mendukung batasan kata.

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

Jawaban yang diedit: perintah berikut telah diuji dengan contoh input yang diberikan di atas dan berfungsi seperti yang diinginkan:

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

Saya menggunakan char § sebagai pemisah rekaman karena tidak ada karakter seperti itu di input dan karena RS = "\0" tidak portabel. Jika Anda merasa itu bisa terjadi seperti § dapat terjadi di file masukan, Anda dapat menggunakan solusi portabel di bawah ini:

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

Linux
  1. Pencocokan Pola Multiline Menggunakan Sed, Awk Atau Grep?

  2. ifrename:perintah tidak ditemukan

  3. rm:perintah tidak ditemukan

  1. mv:perintah tidak ditemukan

  2. ln:perintah tidak ditemukan

  3. awk:perintah tidak ditemukan

  1. nc:perintah tidak ditemukan

  2. manajer langganan:perintah tidak ditemukan

  3. Menggunakan grep vs awk