Cara Menggunakan Penyata Kawalan Aliran di Awk - Bahagian 12
- 4190
- 181
- Clarence Powlowski
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 AWKTerdapat pelbagai pernyataan kawalan aliran dalam pengaturcaraan AWK dan ini termasuk:
- Kenyataan jika-else
- untuk pernyataan
- Semasa pernyataan
- Pernyataan sementara
- pernyataan rehat
- Teruskan pernyataan
- pernyataan seterusnya
- Penyataan NextFile
- 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.
- « Debian GNU/Linux ulang tahun perjalanan selama 23 tahun dan masih mengira…
- Cara Mengurus Log Sistem (Konfigurasikan, Putar dan Import Ke Pangkalan Data) di RHEL 7 - Bahagian 5 »