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
Mengapa Bash `(())` tidak berfungsi di dalam `[[]]`?
Apakah tidak mungkin menginstal R 4.0 di Ubuntu 18.04.4 LTS karena r-base-core memerlukan versi libc6 >=2.29?