Cara Menggunakan Pernyataan Kontrol Aliran di Awk - Bagian 12


Ketika Anda meninjau semua contoh Awk yang telah kita bahas sejauh ini, sejak awal seri Awk, Anda akan melihat bahwa semua perintah dalam berbagai contoh dijalankan secara berurutan, yaitu satu demi satu. Namun dalam situasi tertentu, kita mungkin ingin menjalankan beberapa operasi pemfilteran teks berdasarkan beberapa kondisi, di situlah pendekatan pernyataan kontrol aliran diterapkan.

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

  1. pernyataan if-else
  2. untuk pernyataan
  3. pernyataan sementara
  4. pernyataan lakukan-sementara
  5. pernyataan istirahat
  6. lanjutkan pernyataan
  7. pernyataan selanjutnya
  8. pernyataan file berikutnya
  9. pernyataan keluar

Namun, untuk cakupan seri ini, kami akan menguraikan: if-else, for, while dan do while pernyataan. Ingatlah bahwa kita telah mempelajari cara menggunakan pernyataan berikutnya di Bagian 6 seri Awk ini.

1. Pernyataan if-else

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

if  (condition1) {
     actions1
}
else {
      actions2
}

Dalam sintaks di atas, condition1 dan condition2 adalah ekspresi Awk, dan actions1 dan actions2 adalah perintah Awk yang dijalankan ketika kondisi masing-masing terpenuhi.

Ketika kondisi1 terpenuhi, artinya benar, maka tindakan1 dieksekusi dan pernyataan if keluar, jika tidak maka tindakan2 adalah dieksekusi.

Pernyataan if juga dapat diperluas menjadi pernyataan if-else_if-else seperti di bawah ini:

if (condition1){
     actions1
}
else if (conditions2){
      actions2
}
else{
     actions3
}

Untuk formulir di atas, jika kondisi1 benar, maka tindakan1 dieksekusi dan pernyataan if keluar, jika tidak maka kondisi2 dievaluasi dan jika benar, maka tindakan2 dieksekusi dan pernyataan if keluar. Namun, jika kondisi2 salah maka tindakan3 akan dieksekusi dan pernyataan if akan keluar.

Berikut adalah contoh penggunaan pernyataan if, kami memiliki daftar pengguna dan usia mereka yang disimpan dalam file, pengguna .txt.

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

aaronkilik@tecMint ~ $ cat users.txt
Sarah L			35    	F
Aaron Kili		40    	M
John  Doo		20    	M
Kili  Seth		49    	M    

Kita dapat menulis skrip shell singkat untuk menjalankan pekerjaan kita di atas, berikut isi skripnya:


#!/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 test.sh
./test.sh
Contoh Keluaran
User Sarah L is more than 25 years old
User Aaron Kili is more than 25 years old
User John Doo is less than 25 years old.
User Kili Seth is more than 25 years old

2. Pernyataan untuk

Jika Anda ingin menjalankan beberapa perintah Awk dalam satu lingkaran, maka pernyataan for menawarkan cara yang sesuai untuk melakukannya, dengan sintaksis di bawah ini:

Di sini, pendekatan ini secara sederhana didefinisikan dengan penggunaan penghitung untuk mengontrol eksekusi loop, pertama-tama Anda perlu menginisialisasi penghitung, kemudian menjalankannya terhadap kondisi pengujian, jika benar, jalankan tindakan dan terakhir tambahkan penghitung. Perulangan berakhir ketika counter tidak memenuhi kondisi.

for ( counter-initialization; test-condition; counter-increment ){
      actions
}

Perintah Awk berikut menunjukkan cara kerja pernyataan for, di mana kita ingin mencetak angka 0-10:

awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }'
Contoh Keluaran
0
1
2
3
4
5
6
7
8
9
10

3. Pernyataan sementara

Sintaks konvensional dari pernyataan while adalah sebagai berikut:

while ( condition ) {
          actions
}

Kondisinya adalah ekspresi Awk dan tindakannya adalah baris perintah Awk yang dijalankan ketika kondisinya benar.

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

#!/bin/bash
awk ' BEGIN{ counter=0 ;
         
        while(counter<=10){
              print counter;
              counter+=1 ;
             
}
}  

Simpan file dan buat skrip dapat dieksekusi, lalu jalankan:

chmod +x test.sh
./test.sh
Contoh Keluaran
0
1
2
3
4
5
6
7
8
9
10

4. Pernyataan lakukan sementara

Ini adalah modifikasi dari pernyataan while di atas, dengan sintaksis dasar berikut:

do {
     actions
}
 while (condition) 

Perbedaannya adalah, pada do while, perintah Awk dijalankan sebelum kondisi dievaluasi. Dengan menggunakan contoh pada pernyataan while di atas, kita dapat mengilustrasikan penggunaan do while dengan mengubah perintah Awk dalam skrip test.sh menjadi berikut:

#!/bin/bash

awk ' BEGIN{ counter=0 ;  
        do{
            print counter;  
            counter+=1 ;    
        }
        while (counter<=10)   
} 
'

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

chmod +x test.sh
./test.sh
Contoh Keluaran
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 pernyataan kontrol aliran lainnya di Awk.

Meskipun demikian, bagian dari seri Awk ini akan memberi Anda gambaran mendasar yang jelas tentang bagaimana eksekusi perintah Awk dapat dikontrol berdasarkan kondisi tertentu.

Anda juga dapat menguraikan lebih lanjut pernyataan kontrol aliran lainnya untuk mendapatkan pemahaman lebih lanjut tentang pokok bahasannya. Terakhir, di bagian selanjutnya dari seri Awk, kita akan beralih ke penulisan skrip Awk.