|

Perintah awk menggunakan Control Statements for, if, while, next, break, dll

awk Control Statements mempunyai kemiripan dengan bahasa C, berfungsi untuk mengatur alur eksekusi blok kode tertentu dengan expression sebagai syarat kondisi.

  • if-else statement
  • for statement
  • while statement
  • do-while statement
  • break statement
  • continue statement
  • next statement
  • nextfile statement
  • exit statement

Artikel berikut ini akan menjelaskan dan contoh cara menggunakan Control Statements di perintah awk

if-else statement

if-else berguna untuk kontrol menentukan keputusan berdasarkan kondisi, dan akan terbagi menjadi 2 action. action pertama untuk jika kondisi sesuai (true) dan acotion 2 jika kondisi tidak sesuai (false).

if  (condition1) {
     actions1
}
else {
      actions2
}

Contoh if-else diatas jika di terapkan ke awk dengan file input buah.txt, akan seperti dibawah ini

# awk '{if ($2 == "red"){print $0;}else {print "warna tidak cocok";}}' buah.txt
awk control statements if-else

Hasil eksekusi akan mengecek perbaris data reocrd yang ada di dalam buah.txt tang berjumlah 10 baris out put.

for statement

for statement merupakan kontrol perulangan atau loop selama kondisi terpenuhi. Memiliki 3 statement didalamnya yang berguna utnuk inisialisasi variabel, kondisi yang diuji, dan statement aritmatik untuk counter.

// simple
for (initialization; condition; increment){action}

// array counter
for (variable in array/list) {action}

Jika diterapkan di awk untuk mencetak dari baris terakhir ke baris awal data file buah.txt

# awk '{d[a++]=$0} END{for (n=10; n>=0; n--){print d[n]} }' buah.txt
awk for statement

atau untuk for dengan array jika diterapkan untuk menghitung total harga data buah.txt akan seperti dibawah ini.

# awk 'BEGIN {FS="$"; OFS="Rp."} {ht[i++]=$2; sum=0; print $1, $2} END{     for(i in ht){sum=sum+ht[i];}print "\nHarga Total = \t\t\tRp." sum;}' buah.txt
awk for statement
while statement

while statement berguna untuk melakukan perulangan / Looping. Statement yang dibutuhkan adalah expresion kondisi dimana selama kondisi sesuai / benar akan mengeksekusi action. Tidak ada statement counter seperti for untuk exit Loop, jadi counter jika diperlukan perlu digunakan didalam block action.

// simple
while ( condition ) { actions }
// array
while (variable in array/list) {action}

Jika diterapkan untuk mencetak setiap kolom dari baris ke 1 – 3 data file buah.txt

# awk 'NR==1, NR==3 {i=1; while( i <= NF){print NR,$i; i++}}' buah.txt
awk while statement
do-while statement

do-while merupakan kontrol perulangan / looping, perbedaan dengan while adalah do-while mengeksekusi action block terlebih dahulu sebelum menanyakan conditional benar / salah. Jadi sekalipun ada condition tidak terpenuhi atau false action block tetap di eksekusi sekali dan jika true action body akan di ulang kembali.

do { actions } while (condition) 

Jika diterapkan ingin mencetak setiap kolom baris ke 8 – 10 dari buah.txt. Walau kondisi tidak terpenuhi block action tetap dijalan sekali.

# awk 'NR==8, NR==10 {i=5; n=1; do {print $n; i++; n++ }while ( i <= NF)}' buah.txt
break statement

break statement berfungsi untuk mengakhiri block perulangan seperti “for, while, atau do” secara paksa. Dan hanya bisa dilakukan di dalam block perulangan.

berikut ini contoh diterapkan pada contoh perulangan while dari contoh sebelumnya

# awk 'NR==1, NR==3 {i=1; while( i <= NF){print NR,$i; i++;break}}' buah.txt

Dapat dilihat hasilnya sebelum dan sesudah menggunakan break, ekskusi perulangan while untuk mencetak kolom setiap bari berhenti di kolom pertama di setiap barisnya dan hanya mencetak nama buahnya saja.

continue statement

continue digunakan untuk melanjutkan perulangan dan mengabaikan satement setelahnya.

berikut ini contoh diterapkan pada contoh perulangan while dari contoh sebelumnya

# awk 'NR==1, NR==3 {i=1; while( i <= NF){if (NR == 2){i++; continue;print i}else{print NR,$i; i++}}}' buah.txt

Bisa dilihat hasilnya ketika block if terpenuhi atau true {if (NR == 2){i++; continue;print i} dengan adanya continue perulangan dilanjut dan mengabaikan statement di belakangnnya untuk mencetak nilai i.

next statement

next statement berfungsi mengabaikan block / statement didepannya.

sebagai contoh mengabaikan block yang berisi statement baris data ke 1 -3 dan baris data ke 10 dari file buah.txt

# awk 'NR==1,NR==3{next} NR==10{next} {print $0}' buah.txt

hasilnya baris data ke 1-3 dan ke 10 diabaikan untuk di cetak.

nextfile statement

nextfile merupakan statement yang berfungsi berpindah ke file selanjutnya.

sebagai contoh ada dua buah file buah.txt dan buah2.txt yang mana jika menemukan kolom satu berawalan “Ap” maka input file akan berpindah ke file selanjutnya.

# awk '{if ($1 ~/^Ap/){print $0; nextfile}else{next}}' buah.txt buah2.txt

Hasilnya hanya mencetak data buah dengan kolom 1 nama buah berawalan “Ap” di setiap file.

exit statement

exit statement jika digunakan maka akan menghentikan keseluruhan perintah awk yang berjalan. Berbeda dengan break yang menhentikan proses looping.

contoh file buah.txt memiliki 5 record dan jika diterapkan statement exit di pada baris ke 3 perintah awk akan berhenti.

# awk '{if(NR==3){exit}else{print NR,$0}}' buah.txt

Bisa dilihat hasilnya sampai di baris ketika awk berhenti.

Similar Posts

5 1 vote
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments