- Awk menjadikan text file sebagai records dan fields
- Seperti bahasa pemrograman lainnya, Awk mengandung variabel, kondisi, dan looping
- Awk mempunyai operator aritmatika dan string
- Awk bisa digenerate menjadi laporan yang berformat
/search pattern2/ {action}' file
- Pencarian pola adalah merupakan regular expression
- Action - statements atau keputusan yang akan diambil
- Awk bisa memungkinkan kita untuk membuat banyak pola dan banyak action
- Awk membaca baris dalam sebuah file.
- Untuk beberapa baris, ini dicocokkan dengan pola yang dibuat. Jika polanya cocok maka keputusan selanjutnya bisa dilakukan, seperti print misalnya.
- Jika tidak ada pola yang cocok, maka tidak ada action/keputusan yang akan diambil.
- Memberikan pola atau action tidak diharuskan.
- Jika tidak ada pola yang dibuat, maka output default nya adalah setiap baris dari file yang anda pakai.
- Jika tidak ada action/keputusan yang dibuat, maka output default nya adalah memunculkan hasil pencarian pada layar anda.
- Kurung kurawal tanpa action itu artinya tidak ada keputusan, tapi tidak akan memunculkan output default tadi.
- Setiap statemen dalam action harus di pisahkan dengan tanda titik koma (;)
1000001 Deri Manager Sales Rp.2.000.000
1000002 Pepi Developer IT Rp.3.000.000
1000003 Desi Sysadmin IT Rp.5.000.000
1000004 Anisa Manager Marketing Rp.6.000.000
1000005 Rendi DBA IT Rp.7.000.000
Contoh 1 : Metode default pada awk
Secara default awk mencetak setiap baris dalam sebuah file.
root@laborate:/home/apocalypsix/awk# awk '{print;}' pegawai.txt
1000001 Deri Manager Sales Rp.2.000.000
1000002 Pepi Developer IT Rp.3.000.000
1000003 Desi Sysadmin IT Rp.5.000.000
1000004 Anisa Manager Marketing Rp.6.000.000
1000005 Rendi DBA IT Rp.7.000.000
Contoh 2 : Print baris-baris tertentu yang cocok dengan pola
root@laborate:/home/apocalypsix/awk# awk '/Deri/
> /Anisa/' pegawai.txt
1000001 Deri Manager Sales Rp.2.000.000
1000004 Anisa Manager Marketing Rp.6.000.000
Dari contoh diatas awk mencetak baris-baris tertentu yang memiliki kecocokan dengan pola. Pola yang kita buat adalah “Deri” dan “Anisa”. Awk mencari baris yang mengandung “Deri” maupun “Anisa” pada baris manapun dalam file tersebut.
Contoh 3 : Hanya mencetak field tertentu secara spesifik.
Algoritma memiliki angka dari variable yang dibangun. Untuk setiap record pada baris dalam sebuah file, ini di pecah oleh pemisah karakter blank space atau whitespace secara default dan tersimpan dalam variabel $n. Jika pada baris hanya memiliki 4 kata, maka akan tersimpan sebagai $1, $2, $3, $4. $0 mewakili semua baris. NF yang dibuat dalam variabel yang mewakili jumlah field dalam record.
Deri Rp.2.000.000
Pepi Rp.3.000.000
Desi Rp.5.000.000
Anisa Rp.6.000.000
Rendi Rp.7.000.000
Deri Rp.2.000.000
Pepi Rp.3.000.000
Desi Rp.5.000.000
Anisa Rp.6.000.000
Rendi Rp.7.000.000
Contoh 4 : Inisialisasi dan Final Action
Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.
Syntax:
root@laborate:/home/apocalypsix/awk# awk 'BEGIN {print "Nama\tPosisi\tDivisi\tGaji";}
> {print $2,"\t",$3,"\t",$4,"\t",$NF;}
> END {print "Report Generated\n-------------";
> }' pegawai.txt
Nama Posisi Divisi Gaji
Deri Manager Sales Rp.2.000.000
Pepi Developer IT Rp.3.000.000
Desi Sysadmin IT Rp.5.000.000
Anisa Manager Marketing Rp.6.000.000
Rendi DBA IT Rp.7.000.000
Report Generated
-------------
Dari contoh diatas, awk mencetak semua headline dan baris terakhir untuk laporan.
Contoh 5 : Mencari pegawai yang memiliki ID lebih besar dari 1000002
root@laborate:/home/apocalypsix/awk# awk '$1 >1000002' pegawai.txt
Nip Nama Posisi Divisi Gaji
1000003 Desi Sysadmin IT Rp.5.000.000
1000004 Anisa Manager Marketing Rp.6.000.000
1000005 Rendi DBA IT Rp.7.000.000
Contoh 6 : Cetak list dari karyawan dari Divisi IT
Nama divisi berada pada field ke-4. Jadi perlu di cek jika $4 cocok dengan string “IT”, jika ya print baris nya.
1000002 Pepi Developer IT Rp.3.000.000
1000003 Desi Sysadmin IT Rp.5.000.000
1000005 Rendi DBA IT Rp.7.000.000
Contoh 7 : Print jumlah pegawai yang berada di Divisi IT
Contoh dibawah ini, lakukan cek jika divisi nya IT. Jika ya, pada action, hanya menghitung jumlah variabel, dimana telah diinisialisasi dengan 0 pada bagian BEGIN.
root@laborate:/home/apocalypsix/awk# awk 'BEGIN {count=0;}
> $4 ~ /IT/ { count++; }
> END { print "Jumlah karyawan divisi IT =",count;}' pegawai.txt
Jumlah karyawan divisi IT = 3
Lalu dibagian akhir dari proses, hanya lakukan pencetakan isi dari variabel count yang kita buat untuk menghitung karyawan yang berada di divisi IT.
Sekian dulu tutorial awk di linux/unix ini. jika anda mengalami kesulitan jangan sungkan untuk bertanya, saya dengan senang hati akan membantu.
Semoga bermanfaat.
Salam penguin! :)