Cara menggunakan pernyataan kontrol aliran dalam awk - bagian 12

Cara menggunakan pernyataan kontrol aliran dalam awk - bagian 12

Saat Anda meninjau semua contoh AWK yang telah kami bahas sejauh ini, sejak awal seri AWK, Anda akan melihat bahwa semua perintah dalam berbagai contoh dieksekusi secara berurutan, yaitu satu demi satu yang lain. Tetapi dalam situasi tertentu, kami mungkin ingin menjalankan beberapa operasi pemfilteran teks berdasarkan beberapa kondisi, di situlah pendekatan pernyataan kontrol aliran masuk.

Gunakan pernyataan kontrol aliran dalam AWK

Ada berbagai pernyataan kontrol aliran dalam pemrograman AWK dan ini termasuk:

  1. Pernyataan If-Else
  2. untuk pernyataan
  3. sementara pernyataan
  4. pernyataan do-while
  5. Pernyataan istirahat
  6. Lanjutkan pernyataan
  7. Pernyataan berikutnya
  8. Pernyataan NextFile
  9. pernyataan keluar

Namun, untuk ruang lingkup seri ini, kami akan menguraikan: if-else, untuk, ketika Dan lakukan sementara pernyataan. Ingatlah bahwa kita sudah berjalan melalui cara menggunakan pernyataan berikutnya di Bagian 6 dari seri AWK ini.

1. Pernyataan if-else

Sintaks yang diharapkan dari Jika pernyataan mirip dengan shell Jika pernyataan:

if (condition1) action1 else action2 

Dalam sintaks di atas, kondisi1 Dan kondisi2 adalah ekspresi yang canggung, dan Tindakan1 Dan Tindakan2 Apakah perintah AWK dieksekusi saat kondisi masing -masing terpenuhi.

Kapan kondisi1 puas, artinya itu benar Tindakan1 dieksekusi dan Jika pernyataan keluar, jika tidak Tindakan2 dieksekusi.

Itu Jika pernyataan juga dapat diperluas ke a IF-ELSE_IF-ELSE pernyataan seperti di bawah ini:

if (condition1) action1 lain jika (condition2) action2 else action3 

Untuk formulir di atas, jika kondisi1 itu benar, kalau begitu Tindakan1 dieksekusi dan Jika pernyataan keluar, jika tidak kondisi2 dievaluasi dan jika itu benar, maka Tindakan2 dieksekusi dan Jika pernyataan keluar. Namun, kapan kondisi2 itu salah, Tindakan3 dieksekusi dan Jika pernyataan keluar.

Berikut adalah casing yang digunakan Jika pernyataan, Kami memiliki daftar pengguna dan mereka usia disimpan dalam file, pengguna.txt.

Kami ingin mencetak pernyataan yang menunjukkan nama pengguna dan apakah usia pengguna kurang atau lebih dari 25 tahun.

[Email dilindungi] ~ $ pengguna kucing.txt Sarah L 35 F Aaron Kili 40 M John Doo 20 M Kili Seth 49 m 

Kita dapat menulis skrip shell pendek untuk melaksanakan pekerjaan kita di atas, berikut adalah konten skrip:

#!/bin/bash awk 'if ($ 3 <= 25 ) print "User",$1,$2,"is less than 25 years old." ;  else  print "User",$1,$2,"is more than 25 years old" ;  ' ~/users.txt 

Kemudian simpan file dan keluar, buat skrip dapat dieksekusi dan jalankan sebagai berikut:

$ chmod +x tes.sh $ ./tes.SH 
Output sampel
Pengguna Sarah L berusia lebih dari 25 tahun, Aaron Kili, lebih dari 25 tahun pengguna John Doo kurang dari 25 tahun. Pengguna Kili Seth berusia lebih dari 25 tahun 

2. Pernyataan untuk

Jika Anda ingin menjalankan beberapa perintah AWK dalam satu loop, lalu untuk pernyataan Menawarkan cara yang cocok untuk melakukannya, dengan sintaks di bawah ini:

Di sini, pendekatan ini hanya ditentukan oleh penggunaan penghitung untuk mengontrol eksekusi loop, pertama Anda perlu menginisialisasi penghitung, kemudian menjalankannya terhadap kondisi pengujian, jika itu benar, melaksanakan tindakan dan akhirnya menambah penghitung. Loop berakhir ketika konter tidak memenuhi kondisinya.

for (kontra-inisialisasi; uji-kondisi; kontra-pendapatan) action 

Perintah AWK berikut menunjukkan bagaimana untuk pernyataan bekerja, di mana kami ingin mencetak angka 0-10:

$ awk 'begin for (counter = 0; counter<=10;counter++) print counter ' 
Output sampel
0 1 2 3 4 5 6 7 8 9 10 

3. Pernyataan sementara

Sintaks konvensional dari sementara pernyataan adalah sebagai berikut:

while (condition) action 

Kondisinya adalah ekspresi yang dikekad dan tindakan adalah baris perintah awk yang dieksekusi saat kondisinya benar.

Di bawah ini adalah skrip untuk menggambarkan penggunaan sementara pernyataan untuk mencetak angka 0-10:

#!/bin/bash awk 'begin counter = 0; sementara (counter<=10) print counter; counter+=1 ;   

Simpan file dan buat skrip dapat dieksekusi, lalu jalankan:

$ chmod +x tes.sh $ ./tes.SH 
Output sampel
0 1 2 3 4 5 6 7 8 9 10 

4. Pernyataan while

Ini adalah modifikasi dari sementara pernyataan Di atas, dengan sintaks yang mendasari berikut:

do action while (kondisi) 

Sedikit perbedaan adalah, di bawah lakukan sementara, Perintah AWK dieksekusi sebelum kondisi dievaluasi. Menggunakan contoh di bawah sementara pernyataan di atas, kita dapat menggambarkan penggunaan lakukan sementara dengan mengubah perintah awk di tes.SH skrip sebagai berikut:

#!/bin/bash awk 'begin counter = 0; lakukan cetak counter; penghitung+= 1;  while (counter<=10)  ' 

Setelah memodifikasi skrip, simpan file dan keluar. Kemudian buat skrip dapat dieksekusi dan jalankan sebagai berikut:

$ chmod +x tes.sh $ ./tes.SH 
Output sampel
0 1 2 3 4 5 6 7 8 9 10 

Kesimpulan

Ini bukan panduan komprehensif mengenai pernyataan kontrol aliran awk, seperti yang telah saya sebutkan sebelumnya, ada beberapa lainnya pernyataan kontrol aliran di AWK.

Meskipun demikian, bagian dari seri AWK ini harus memberi Anda ide mendasar yang jelas tentang bagaimana eksekusi perintah AWK dapat dikontrol berdasarkan kondisi tertentu.

Anda dapat menguraikan lebih lanjut tentang pernyataan kontrol aliran lainnya untuk mendapatkan lebih banyak pemahaman tentang materi pelajaran. Akhirnya, di bagian selanjutnya dari seri AWK, kami akan beralih ke menulis skrip AWK.