Cara Menggunakan Penyata Kawalan Aliran di Awk - Bahagian 12

Cara Menggunakan Penyata Kawalan Aliran di Awk - Bahagian 12

Apabila anda mengkaji semua contoh AWK yang telah kami sampaikan setakat ini, dari awal siri AWK, anda akan melihat bahawa semua arahan dalam pelbagai contoh dilaksanakan secara berurutan, itu satu demi satu. Tetapi dalam situasi tertentu, kami mungkin ingin menjalankan beberapa operasi penapisan teks berdasarkan beberapa syarat, di sinilah pendekatan penyata kawalan aliran ditetapkan.

Gunakan penyata kawalan aliran dengan AWK

Terdapat pelbagai pernyataan kawalan aliran dalam pengaturcaraan AWK dan ini termasuk:

  1. Kenyataan jika-else
  2. untuk pernyataan
  3. Semasa pernyataan
  4. Pernyataan sementara
  5. pernyataan rehat
  6. Teruskan pernyataan
  7. pernyataan seterusnya
  8. Penyataan NextFile
  9. Pernyataan Keluar

Walau bagaimanapun, untuk skop siri ini, kami akan menerangkan: jika tidak, untuk, manakala dan buat sementara pernyataan. Ingat bahawa kita sudah berjalan melalui cara menggunakan pernyataan seterusnya dalam bahagian 6 siri AWK ini.

1. Kenyataan IF-ELSE

Sintaks yang diharapkan dari jika pernyataan sama dengan kerang jika pernyataan:

jika (keadaan1) actions1 else actions2 

Dalam sintaks di atas, keadaan1 dan keadaan2 adalah ekspresi awk, dan tindakan1 dan tindakan2 Adakah arahan AWK dilaksanakan apabila syarat masing -masing berpuas hati.

Bila keadaan1 berpuas hati, bermakna ia benar, maka tindakan1 dilaksanakan dan jika pernyataan Keluar, sebaliknya tindakan2 dilaksanakan.

The jika pernyataan juga boleh diperluas ke a if-else_if-else pernyataan seperti di bawah:

jika (keadaan1) actions1 else if (conditions2) actions2 else actions3 

Untuk borang di atas, jika keadaan1 Benar, maka tindakan1 dilaksanakan dan jika pernyataan Keluar, sebaliknya keadaan2 dinilai dan jika ia benar, maka tindakan2 dilaksanakan dan jika pernyataan keluar. Walau bagaimanapun, bila keadaan2 adalah palsu ketika itu, tindakan3 dilaksanakan dan jika pernyataan keluar.

Berikut adalah kes yang digunakan jika pernyataan, Kami mempunyai senarai pengguna dan mereka umur disimpan dalam fail, pengguna.txt.

Kami mahu mencetak pernyataan yang menunjukkan nama pengguna dan sama ada umur pengguna kurang atau lebih daripada 25 tahun.

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

Kami boleh menulis skrip shell pendek untuk menjalankan tugas kami di atas, inilah kandungan 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 fail dan keluar, buat skrip boleh dilaksanakan dan jalankan seperti berikut:

$ chmod +x ujian.sh $ ./ujian.sh 
Output sampel
Pengguna Sarah L lebih dari 25 tahun pengguna Aaron Kili lebih dari 25 tahun pengguna John Doo berumur kurang dari 25 tahun. Pengguna Kili Seth berumur lebih dari 25 tahun 

2. Untuk pernyataan

Sekiranya anda ingin melaksanakan beberapa arahan AWK dalam gelung, maka untuk pernyataan Menawarkan cara yang sesuai untuk melakukannya, dengan sintaks di bawah:

Di sini, pendekatan ini hanya ditakrifkan oleh penggunaan kaunter untuk mengawal pelaksanaan gelung, pertama anda perlu memulakan kaunter, kemudian jalankannya terhadap keadaan ujian, jika benar, melaksanakan tindakan dan akhirnya meningkatkan kaunter. Gelung itu berakhir apabila kaunter tidak memenuhi syarat.

untuk (counter-initialization; uji-condition; counter-increment) actions 

Perintah AWK berikut menunjukkan bagaimana untuk pernyataan berfungsi, di mana kita mahu mencetak nombor 0-10:

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

3. Pernyataan sementara

Sintaks konvensional dari Semasa pernyataan adalah seperti berikut:

sementara (keadaan) tindakan 

Keadaannya adalah ungkapan yang mengagumkan dan tindakan adalah garis arahan awk yang dilaksanakan apabila keadaan itu benar.

Berikut adalah skrip untuk menggambarkan penggunaan Semasa pernyataan Untuk mencetak nombor 0-10:

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

Simpan fail dan buat skrip boleh dilaksanakan, kemudian jalankan:

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

4. Pernyataan semasa

Ia adalah pengubahsuaian Semasa pernyataan di atas, dengan sintaks yang mendasari berikut:

lakukan actions sementara (keadaan) 

Sedikit perbezaan ialah, di bawah buat sementara, Perintah AWK dilaksanakan sebelum keadaan dinilai. Menggunakan contohnya di bawah Semasa pernyataan di atas, kita dapat menggambarkan penggunaan buat sementara dengan mengubah perintah awk di ujian.sh Skrip seperti berikut:

#!/bin/bash awk 'bermula counter = 0; lakukan cetak counter; kaunter+= 1;  sementara (kaunter<=10)  ' 

Setelah mengubah suai skrip, simpan fail dan keluar. Kemudian buat skrip boleh dilaksanakan dan laksanakannya seperti berikut:

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

Kesimpulan

Ini bukan panduan yang komprehensif mengenai penyata kawalan aliran awk, seperti yang telah saya sebutkan tadi, ada beberapa yang lain Penyataan Kawalan Aliran Dalam Awk.

Walau bagaimanapun, bahagian siri awk ini harus memberi anda idea asas yang jelas tentang bagaimana pelaksanaan perintah AWK dapat dikawal berdasarkan syarat -syarat tertentu.

Anda juga boleh menerangkan lebih banyak lagi mengenai penyata kawalan aliran untuk mendapatkan lebih banyak pemahaman mengenai perkara ini. Akhirnya, di bahagian seterusnya siri AWK, kami akan bergerak ke dalam menulis skrip AWK.