Pernyataan bersyarat dalam AWK

Pernyataan bersyarat dalam AWK

Pernyataan bersyarat adalah salah satu fitur AWK yang paling kuat, memungkinkan pengguna untuk menjalankan perintah yang berbeda berdasarkan nilai variabel atau ekspresi. Ini memungkinkan pembuatan logika kompleks dalam skrip AWK, dan memfasilitasi kinerja tugas pemrosesan teks canggih.

Dalam tutorial ini, kami akan membahas dasar-dasar pernyataan bersyarat dalam AWK, termasuk sintaksis dan penggunaan pernyataan 'if-else'. Misalnya:

  1. Pernyataan If-Else dengan AWK
  2. Beralih pernyataan dengan AWK
  3. Operator terner dengan canggung

Pernyataan If-Else dengan AWK

Itu 'if-else' Pernyataan adalah pernyataan bersyarat dasar di AWK. Ini memungkinkan Anda untuk menentukan berbagai perintah untuk dieksekusi berdasarkan kondisi tertentu. Sintaks untuk 'if-else' Pernyataan adalah sebagai berikut:

if (kondisi) # perintah untuk mengeksekusi jika kondisi benar else # perintah untuk mengeksekusi jika kondisi false
123456if (kondisi) # perintah untuk mengeksekusi jika kondisi benar else # perintah untuk mengeksekusi jika kondisi false

Di Sini, 'kondisi' adalah ekspresi boolean yang mengevaluasi baik benar atau salah. Jika kondisinya benar, perintah di dalam kawat gigi keriting berikut 'jika' dieksekusi. Jika kondisinya salah, perintah di dalam kawat gigi keriting berikut 'kalau tidak' dieksekusi.

Misalnya, katakanlah kami memiliki file yang berisi daftar angka, dan kami ingin mencetak angka yang lebih besar dari 10. Kita bisa menggunakan 'if-else' Pernyataan untuk menyelesaikan tugas ini sebagai berikut:

awk 'if ($ 1> 10) cetak $ 1' angka.txt
1awk 'if ($ 1> 10) cetak $ 1' angka.txt

Di sini, 'jika' Pernyataan memeriksa apakah bidang pertama ($ 1) lebih besar dari 10. Jika ya, nomor tersebut dicetak. Jika tidak, tidak ada yang terjadi.

Anda juga dapat menggunakan 'if-else' pernyataan untuk melakukan tugas yang lebih kompleks. Misalnya, katakanlah kami memiliki file yang berisi daftar nama pengguna dan usianya, dan kami ingin mencetak nama pengguna pengguna yang berusia di atas 18 tahun. Kita dapat menggunakan pernyataan 'if-else' untuk menyelesaikan tugas ini sebagai berikut:

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

Di sini, 'jika' Pernyataan memeriksa apakah bidang kedua ($ 2) lebih besar dari 18. Jika ya, nama pengguna dicetak. Jika tidak, string "pengguna tidak cukup tua" dicetak.

Beralih pernyataan dengan AWK

Itu 'mengalihkan' Pernyataan dalam AWK memungkinkan Anda untuk menjalankan perintah yang berbeda berdasarkan beberapa kondisi. Ini memberikan cara yang lebih ringkas untuk mengekspresikan banyak 'if-else' pernyataan. Sintaks untuk 'mengalihkan' Pernyataan adalah sebagai berikut:

switch (variabel) case value1: # perintah untuk mengeksekusi jika variabel == value1 break case value2: # perintah untuk mengeksekusi jika variabel == value2 break ... default: # perintah untuk mengeksekusi jika tidak ada kasus yang cocok
1234567891011sakelar (variabel) case value1: # perintah untuk mengeksekusi jika variabel == value1 break case value2: # perintah untuk mengeksekusi jika variabel == value2 break2 ... Default: # Perintah untuk dieksekusi jika tidak ada kasus yang cocok

Di Sini, 'variabel' adalah variabel atau ekspresi yang ingin Anda bandingkan dengan nilai yang berbeda. 'value1', 'value2', dll. adalah nilai berbeda yang ingin Anda bandingkan. Itu 'merusak' pernyataan digunakan untuk keluar 'mengalihkan' pernyataan setelah pertandingan ditemukan. Itu 'bawaan' Kata kunci digunakan untuk menentukan perintah untuk dieksekusi jika tidak ada kasus yang cocok.

Misalnya, katakanlah kami memiliki file yang berisi daftar bahasa pemrograman, dan kami ingin mencetak nama bahasa pemrograman berdasarkan ekstensi file. Kita bisa menggunakan 'mengalihkan' Pernyataan untuk menyelesaikan tugas ini sebagai berikut:

awk 'switch ($ nf) case "py": print "python"; merusak; case "rb": cetak "ruby"; merusak; kasus "js": cetak "javascript"; merusak; Default: Cetak "Tidak Diketahui" 'Bahasa.txt
1awk 'switch ($ nf) case "py": print "python"; merusak; case "rb": cetak "ruby"; merusak; kasus "js": cetak "javascript"; merusak; Default: Cetak "Tidak Diketahui" 'Bahasa.txt

Di sini, kami menggunakan 'mengalihkan' pernyataan untuk membandingkan bidang terakhir ($ Nf) terhadap nilai yang berbeda ('py', 'rb', 'js'). Jika nilainya cocok, kami mencetak nama bahasa pemrograman. Jika tidak cocok, kami mencetak "Tidak dikenal".

Operator terner dengan canggung

Itu 'Operator Ternary' di AWK adalah versi steno dari 'if-else' penyataan. Ini memungkinkan Anda untuk melakukan operasi if-else sederhana dalam satu baris. Sintaks untuk operator terner adalah sebagai berikut:

(kondisi) ? Nilai nyata: Nilai palsu
1(kondisi) ? Nilai nyata: Nilai palsu

Di Sini, 'kondisi'adalah ekspresi boolean yang ingin Anda evaluasi. 'nilai asli' adalah nilai yang akan dikembalikan jika kondisinya benar. 'Nilai palsu' adalah nilai yang akan dikembalikan jika kondisinya salah.

Misalnya, katakanlah kami memiliki file yang berisi daftar nomor, dan kami ingin mencetak "Bahkan" Jika angkanya bahkan, dan "Aneh" Jika angkanya aneh. Kita dapat menggunakan operator ternary untuk menyelesaikan tugas ini sebagai berikut:

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

Di sini, kami menggunakan operator ternary untuk memeriksa apakah nomor di bidang pertama ($ 1) bahkan atau aneh. Jika itu bahkan, kami mencetak "Bahkan". Jika aneh, kami mencetak "Aneh".

Kesimpulan

Kesimpulannya, pernyataan bersyarat adalah fitur yang kuat dari AWK yang memungkinkan pengguna untuk melakukan tugas pemrosesan teks canggih. Itu 'if-else' Pernyataan adalah pernyataan bersyarat dasar yang memungkinkan Anda untuk menjalankan perintah yang berbeda berdasarkan kondisi tertentu. Dengan menguasai 'if-else' Pernyataan dan pernyataan bersyarat lainnya, Anda bisa menjadi lebih efektif dan efisien dalam skrip canggung Anda, dan menyelesaikan tugas pemrosesan teks yang kompleks dengan mudah.