Kenyataan bersyarat dalam Awk

Kenyataan bersyarat dalam Awk

Kenyataan bersyarat adalah salah satu ciri yang paling kuat dari AWK, yang membolehkan pengguna melaksanakan arahan yang berbeza berdasarkan nilai pembolehubah atau ekspresi. Ini membolehkan penciptaan logik kompleks dalam skrip AWK, dan memudahkan prestasi tugas pemprosesan teks canggih.

Dalam tutorial ini, kami akan merangkumi asas-asas penyata bersyarat dalam AWK, termasuk sintaks dan penggunaan pernyataan 'if-else'. Sebagai contoh:

  1. Kenyataan jika else dengan awk
  2. Pernyataan Tukar dengan Awk
  3. Pengendali ternary dengan awk

Pernyataan jika-else dengan awk

The 'jika tidak' pernyataan adalah pernyataan bersyarat asas di Awk. Ia membolehkan anda menentukan arahan yang berbeza untuk dilaksanakan berdasarkan keadaan tertentu. Sintaks untuk 'jika tidak' pernyataan adalah seperti berikut:

jika (keadaan) # perintah untuk melaksanakan jika keadaan adalah benar else # perintah untuk melaksanakan jika keadaan adalah palsu
123456jika (keadaan) # perintah untuk melaksanakan jika keadaan adalah benar else # perintah untuk melaksanakan jika keadaan adalah palsu

Di sini, 'Keadaan' adalah ungkapan boolean yang menilai sama ada benar atau salah. Sekiranya keadaan itu benar, perintah di dalam pendakap keriting berikut 'jika' dilaksanakan. Sekiranya keadaannya palsu, perintah di dalam pendakap keriting berikut 'Lain' dilaksanakan.

Contohnya, katakan kami mempunyai fail yang mengandungi senarai nombor, dan kami ingin mencetak nombor yang lebih besar dari 10. Kita boleh menggunakan 'jika tidak' pernyataan untuk menyelesaikan tugas ini seperti berikut:

AWK 'if ($ 1> 10) Print $ 1'.txt
1AWK 'if ($ 1> 10) Print $ 1'.txt

Di sini, The 'jika' penyata memeriksa sama ada bidang pertama ($ 1) lebih besar daripada 10. Sekiranya, nombornya dicetak. Sekiranya tidak, tidak ada yang berlaku.

Anda juga boleh menggunakan 'jika tidak' Penyata untuk melaksanakan tugas yang lebih kompleks. Sebagai contoh, katakan kami mempunyai fail yang mengandungi senarai nama pengguna dan umur mereka, dan kami ingin mencetak nama pengguna pengguna yang berusia lebih dari 18 tahun. Kita boleh menggunakan pernyataan 'if-else' untuk menyelesaikan tugas ini seperti berikut:

awk 'if ($ 2> 18) print $ 1 else print "pengguna tidak cukup lama"' Pengguna.txt
1awk 'if ($ 2> 18) print $ 1 else print "pengguna tidak cukup lama"' Pengguna.txt

Di sini, The 'jika' penyata memeriksa sama ada bidang kedua ($ 2) lebih besar daripada 18. Jika ada, nama pengguna dicetak. Sekiranya tidak, rentetan "Pengguna tidak cukup lama" dicetak.

Pernyataan Tukar dengan Awk

The 'Tukar' pernyataan dalam AWK membolehkan anda melaksanakan arahan yang berbeza berdasarkan pelbagai syarat. Ia memberikan cara yang lebih ringkas untuk menyatakan pelbagai 'jika tidak' pernyataan. Sintaks untuk 'Tukar' pernyataan adalah seperti berikut:

suis (variable) case value1: # perintah untuk melaksanakan jika variable == value1 break case value2: # perintah untuk melaksanakan jika variable == value2 break ... # perintah untuk melaksanakan jika tiada kes yang sepadan
1234567891011suis (variable) case value1: # perintah untuk melaksanakan jika variable == value1 break case value2: # perintah untuk melaksanakan jika variable == value2 break ... lalai: # perintah untuk melaksanakan jika tiada kes sepadan

Di sini, 'Pembolehubah' adalah pemboleh ubah atau ungkapan yang anda ingin bandingkan dengan nilai yang berbeza. 'Value1', 'Value2', dan lain-lain. adalah nilai yang berbeza yang anda mahu bandingkan. The 'rehat' pernyataan digunakan untuk keluar 'Tukar' penyataan selepas perlawanan dijumpai. The 'lalai' Kata kunci digunakan untuk menentukan arahan untuk melaksanakan jika tidak ada kes yang sepadan.

Contohnya, katakan kami mempunyai fail yang mengandungi senarai bahasa pengaturcaraan, dan kami ingin mencetak nama bahasa pengaturcaraan berdasarkan lanjutan fail. Kita boleh menggunakan 'Tukar' pernyataan untuk menyelesaikan tugas ini seperti berikut:

awk 'switch ($ nf) case "py": print "python"; rehat; kes "rb": cetak "ruby"; rehat; Kes "JS": Cetak "JavaScript"; rehat; Lalai: Cetak bahasa "tidak diketahui" '.txt
1awk 'switch ($ nf) case "py": print "python"; rehat; kes "rb": cetak "ruby"; rehat; Kes "JS": Cetak "JavaScript"; rehat; Lalai: Cetak bahasa "tidak diketahui" '.txt

Di sini, kami menggunakan 'Tukar' pernyataan untuk membandingkan medan terakhir ($ Nf) terhadap nilai yang berbeza ('py', 'rb', 'js'). Sekiranya nilai sepadan, kami mencetak nama bahasa pengaturcaraan. Sekiranya tidak sepadan, kami mencetak "Tidak diketahui".

Pengendali ternary dengan awk

The 'Pengendali Ternary' dalam Awk adalah versi tersendiri dari 'jika tidak' penyata. Ia membolehkan anda melakukan operasi if-else yang mudah dalam satu baris. Sintaks untuk pengendali ternary adalah seperti berikut:

(keadaan) ? nilai sejati: nilai palsu
1(keadaan) ? nilai sejati: nilai palsu

Di sini, 'Keadaan'adalah ungkapan boolean yang ingin anda menilai. 'nilai sejati' adalah nilai untuk kembali jika keadaan itu benar. 'nilai palsu' adalah nilai untuk kembali jika keadaan itu salah.

Contohnya, katakan kami mempunyai fail yang mengandungi senarai nombor, dan kami mahu mencetak "Malah" Sekiranya nombornya juga, dan "Ganjil" Sekiranya nombornya ganjil. Kita boleh menggunakan pengendali ternary untuk menyelesaikan tugas ini seperti berikut:

awk 'print ($ 1 % 2 == 0) ? Nombor ":" ganjil " '.txt
1awk 'print ($ 1 % 2 == 0) ? Nombor ":" ganjil " '.txt

Di sini, kami menggunakan pengendali ternary untuk memeriksa sama ada nombor di medan pertama ($ 1) sama atau ganjil. Sekiranya walaupun, kami mencetak "Malah". Sekiranya ia ganjil, kami mencetak "Ganjil".

Kesimpulan

Kesimpulannya, pernyataan bersyarat adalah ciri kuat AWK yang membolehkan pengguna melakukan tugas pemprosesan teks canggih. The 'jika tidak' pernyataan adalah pernyataan bersyarat asas yang membolehkan anda melaksanakan perintah yang berbeza berdasarkan keadaan tertentu. Dengan menguasai 'jika tidak' pernyataan dan pernyataan bersyarat yang lain, anda boleh menjadi lebih berkesan dan efisien dalam skrip awk anda, dan menyelesaikan tugas pemprosesan teks yang rumit dengan mudah.