Wednesday, July 31, 2013

Sistem Aman Vs. Sistem Nyaman

Sedikit geli sebenarnya jika menulis topik ini. Alasannya, karena banyak sekali orang mendambakan sebuah keamanan sekaligus mengharapkan kenyamanan diwaktu yang bersamaan. Padahal 2 hal tersebut sangat bertolak belakang satu sama lain. 2 hal ini seperti menjadi 2 kubu yang tidak bisa disatukan dalam satu arah. Dimana kita menginginkan aman maka tidak terhindarkan kita akan kehilangan kenyamanan kita. Saya perjelas dengan bahasa yang lebih sederhana.
Bayangkan didalam kamar kita terdapat sebuah brankas yang berisi tumpukan emas batangan, brankas tersebut kita encrypt dengan kode-kode tertentu agar tidak sembarangan orang bisa melihat apalagi mengambil isinya. Jika memang diperlukan kita akan menyembunyikan brankas tersebut dibalik lukisan di dinding, atau menyimpannya dibalik lantai tepat dibawah tempat tidur kita. Amankah? Sudah pasti aman. Kenapa sampai harus sebegitunya? Karena semua orang tahu, emas itu adalah sesuatu yang berharga. Untuk memyimpannya klita memerlukan privasi yang benar-benar terjaga dari jangkauan orang.
Seandainya suatu hari kita akan bepergian jauh, apa yang akan kita lakukan untuk menjaga brankas tersebut? Sudah pasti kita akan mengunci rapat kamar kita, baik itu pintu maupun jendela. Itu saja tidak cukup, maka pasti kita akan mengunci rapat semua jendela dirumah, bahkan mungkin lalatpun tidak bisa masuk :p
Setelah semua jendela didalam rumah terkunci rapat, tidak mungkin kita akan membiarkan pintu rumah tanpa terkunci. Pintu depan, samping, belakang, semuanya akan kita kunci. Benar?
Setelah semua pintu terkunci, tidak mungkin juga rasanya kita meninggalkan garasi kita tanpa terkunci. Maka seharusnya, kitapun mengunci garasi sebelum bepergian jauh. Kemanan semakin terjamin seketat-ketatnya, karena di perumahan tempat tinggal kita ada satpam yang selalu berjaga siang dan malam.

Dari ilustrasi ini, berapa lapis keamanan yang kita buat untuk melindungi brankas berisi emas batangan tersebut? Aman sekali bukan? Dengan begitu kita dapat bepergian jauh selama mungkin tanpa memikirkan akan ada pencuri yang menemukan brankas kita.
Nyaman nggak sih?
Tidak tahu menurut anda bagaimana, tapi menurut saya itu tidak nyaman. Karena setelah saya memakai pakaian dikamar sebelum bersiap pergi, saya harus mengunci semua jendela dan pintu. Memang tidak lama, hanya diperlukan waktu beberapa detik atau paling lama 3 menit untuk mengunci semua jendela dan pintu dirumah. Tapi tetap ada waktu saya yang tersita karena melakukannya. Kenapa tidak saya tinggalkan saja semuanya karena saya tidak rela meluangkan waktu sekian detik atau sekian menit. Belum lagi kalau kuncinya hilang saya harus mencarinya dulu. Cukup repot.
Bisa saja kita meninggalkan semuanya tanpa terkunci, hanya tertutup begitu saja tapi masih sangat memungkinkan orang akan masuk dan berkeliaran diseluruh isi rumah, dan terdapat kemungkinan yang cukup untuk ditemukannya brankas tersebut.

Ilustrasi tersebut sebenarnya tidak jauh berbeda dengan sebuah sistem, apapun itu. Sistem yang memiliki aturan yang ditegakkan demi menjaga privasi milik kita.
Dalam jaringan yang luas seperti internet, pada hakikatnya tidak ada yang benar-benar aman 100%. Bahkan sistem yang sangat aman sekalipun masih berkemungkinan untuk ditembus dengan beberapa cara, apalagi sistem yang tidak aman? Yang hanya memprioritaskan Kenyamanan yang memanjakan?
Kita akan rela mengunci rapat semua pintu dan jendela rumah sebelum bepergian jauh tanpa memikirkan kenyamanan karena hal itu sudah umum dilakukan oleh sebagian banyak orang untuk menjaga privasi mereka. Jadi semua itu terasa Biasa saja, karena akan rugi jika kita kehilangan isi brankas tadi. Jika untuk brankas tadi saja kita mau membiasakan diri mengamankannya sebelum bepergian jauh, kenapa pada sistem kita harus berpandangan manja? Berpikir dengan skeptik kalau itu sesuatu yang rumit dan sangat mengganggu pikiran kita. Jika pikiran kita cukup terbuka dan cara pandang kita cukup luas, harusnya kita merasa beruntung ketika sebuah sistem mempunyai keamanan yang mumpuni untuk melindungi privasi kita. Jika privasi kita tercemar dan bocor, sudah pasti kita akan complain, atau setidaknya kita akan mengeluhkan "kenapa sistem ini tidak bisa melindungi privasi saya?". Seperti yang saya tulis diatas, tidak ada keamanan yang 100% aman.
Sistem seaman apapun jika kita teledor maka privasi kita pun tidak akan aman kan?

Akan lebih mudah dan menyenangkan sepertinya, jika kita membiasakan diri untuk lebih bijak dalam menyikapi keamanan dan kenyamanan pada sebuah sistem. Karena pada dasarnya, sebuah sistempun didirikan untuk mengatur bagian-bagian dari hidup kita. Seperti salah satunya.....Privasi.

Sistem Aman Vs. Sistem Nyaman

Sedikit geli sebenarnya jika menulis topik ini. Alasannya, karena banyak sekali orang mendambakan sebuah keamanan sekaligus mengharapkan kenyamanan diwaktu yang bersamaan. Padahal 2 hal tersebut sangat bertolak belakang satu sama lain. 2 hal ini seperti menjadi 2 kubu yang tidak bisa disatukan dalam satu arah. Dimana kita menginginkan aman maka tidak terhindarkan kita akan kehilangan kenyamanan kita. Saya perjelas dengan bahasa yang lebih sederhana.
Bayangkan didalam kamar kita terdapat sebuah brankas yang berisi tumpukan emas batangan, brankas tersebut kita encrypt dengan kode-kode tertentu agar tidak sembarangan orang bisa melihat apalagi mengambil isinya. Jika memang diperlukan kita akan menyembunyikan brankas tersebut dibalik lukisan di dinding, atau menyimpannya dibalik lantai tepat dibawah tempat tidur kita. Amankah? Sudah pasti aman. Kenapa sampai harus sebegitunya? Karena semua orang tahu, emas itu adalah sesuatu yang berharga. Untuk memyimpannya klita memerlukan privasi yang benar-benar terjaga dari jangkauan orang.
Seandainya suatu hari kita akan bepergian jauh, apa yang akan kita lakukan untuk menjaga brankas tersebut? Sudah pasti kita akan mengunci rapat kamar kita, baik itu pintu maupun jendela. Itu saja tidak cukup, maka pasti kita akan mengunci rapat semua jendela dirumah, bahkan mungkin lalatpun tidak bisa masuk :p
Setelah semua jendela didalam rumah terkunci rapat, tidak mungkin kita akan membiarkan pintu rumah tanpa terkunci. Pintu depan, samping, belakang, semuanya akan kita kunci. Benar?
Setelah semua pintu terkunci, tidak mungkin juga rasanya kita meninggalkan garasi kita tanpa terkunci. Maka seharusnya, kitapun mengunci garasi sebelum bepergian jauh. Kemanan semakin terjamin seketat-ketatnya, karena di perumahan tempat tinggal kita ada satpam yang selalu berjaga siang dan malam.

Dari ilustrasi ini, berapa lapis keamanan yang kita buat untuk melindungi brankas berisi emas batangan tersebut? Aman sekali bukan? Dengan begitu kita dapat bepergian jauh selama mungkin tanpa memikirkan akan ada pencuri yang menemukan brankas kita.
Nyaman nggak sih?
Tidak tahu menurut anda bagaimana, tapi menurut saya itu tidak nyaman. Karena setelah saya memakai pakaian dikamar sebelum bersiap pergi, saya harus mengunci semua jendela dan pintu. Memang tidak lama, hanya diperlukan waktu beberapa detik atau paling lama 3 menit untuk mengunci semua jendela dan pintu dirumah. Tapi tetap ada waktu saya yang tersita karena melakukannya. Kenapa tidak saya tinggalkan saja semuanya karena saya tidak rela meluangkan waktu sekian detik atau sekian menit. Belum lagi kalau kuncinya hilang saya harus mencarinya dulu. Cukup repot.
Bisa saja kita meninggalkan semuanya tanpa terkunci, hanya tertutup begitu saja tapi masih sangat memungkinkan orang akan masuk dan berkeliaran diseluruh isi rumah, dan terdapat kemungkinan yang cukup untuk ditemukannya brankas tersebut.

Ilustrasi tersebut sebenarnya tidak jauh berbeda dengan sebuah sistem, apapun itu. Sistem yang memiliki aturan yang ditegakkan demi menjaga privasi milik kita.
Dalam jaringan yang luas seperti internet, pada hakikatnya tidak ada yang benar-benar aman 100%. Bahkan sistem yang sangat aman sekalipun masih berkemungkinan untuk ditembus dengan beberapa cara, apalagi sistem yang tidak aman? Yang hanya memprioritaskan Kenyamanan yang memanjakan?
Kita akan rela mengunci rapat semua pintu dan jendela rumah sebelum bepergian jauh tanpa memikirkan kenyamanan karena hal itu sudah umum dilakukan oleh sebagian banyak orang untuk menjaga privasi mereka. Jadi semua itu terasa Biasa saja, karena akan rugi jika kita kehilangan isi brankas tadi. Jika untuk brankas tadi saja kita mau membiasakan diri mengamankannya sebelum bepergian jauh, kenapa pada sistem kita harus berpandangan manja? Berpikir dengan skeptik kalau itu sesuatu yang rumit dan sangat mengganggu pikiran kita. Jika pikiran kita cukup terbuka dan cara pandang kita cukup luas, harusnya kita merasa beruntung ketika sebuah sistem mempunyai keamanan yang mumpuni untuk melindungi privasi kita. Jika privasi kita tercemar dan bocor, sudah pasti kita akan complain, atau setidaknya kita akan mengeluhkan "kenapa sistem ini tidak bisa melindungi privasi saya?". Seperti yang saya tulis diatas, tidak ada keamanan yang 100% aman.
Sistem seaman apapun jika kita teledor maka privasi kita pun tidak akan aman kan?

Akan lebih mudah dan menyenangkan sepertinya, jika kita membiasakan diri untuk lebih bijak dalam menyikapi keamanan dan kenyamanan pada sebuah sistem. Karena pada dasarnya, sebuah sistempun didirikan untuk mengatur bagian-bagian dari hidup kita. Seperti salah satunya.....Privasi.

Tuesday, July 30, 2013

Tutorial AWK di Linux / Unix


Pada artikel sebelumnya mengenai awk saya sudah sedikit menjelaskan apa itu awk. Perlu diketahui lagi, dari beberapa referensi yang saya dapat bahwa AWK itu ternyata sebuah singkatan dari pembuat algoritma pengurai ini. AWK diambil dari inisial ketiga pembuatnya yaitu “Aho, Weinberger, and Kernighan”. Awk paling sering digunakan untuk me-scan dan mem-proses sebuah pola. Pencarian pada sebuah file yang cocok dengan pola yang dibuat lalu menyaring pencarian tersebut kedalam sebuah file baru.

Berikut ini adalah fitur-fitur yang dimiliki Awk :
  • 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

Awk membaca dari sebuah file atau dari input standard, dan menjadikannya output standard. Awk tidak bisa digunakan pada file yang tidak mengandung text.

syntax :
awk '/search pattern1/ {action}
     /search pattern2/ {action}' file
 

Dari syntax awk diatas, artinya :
  • Pencarian pola adalah merupakan regular expression
  • Action - statements atau keputusan yang akan diambil
  • Awk bisa memungkinkan kita untuk membuat banyak pola dan banyak action

Cara kerja Awk 
  • 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 (;) 

Mari kita praktekan, meskipun algoritma awk ini ada pada linux maupun unix, saya menggunakan Ubuntu 12.04. Pertama, kita buat file yang berisi seperti ini :

root@laborate:/home/apocalypsix/awk# cat 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 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

Pada contoh diatas kita tidak membuat sebuah pola, jadi action ini berlaku untuk semua baris tanpa penyaringan. Action print tanpa argumen akan mencetak semua baris juga secara default, jadi ini mencetak semua baris dari file tersebut. Statement action harus berada dalam kurung kurawal seperti contoh diatas.


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.

root@laborate:/home/apocalypsix/awk# awk '{print $2,$5;}' pegawai.txt
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
root@laborate:/home/apocalypsix/awk# awk '{print $2,$NF;}' pegawai.txt
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

Dari contoh diatas $2 dan $5 mewakili Nama dan Gaji. Kita bias mendapatkan gaji menggunakan $NF juga, dimana $NF mewakili field terakhir.


 Contoh 4 : Inisialisasi dan Final Action



Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.

Syntax:

BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }

# is for comments in Awk

Action yang spesifik pada bagian BEGIN akan meng-eksekusi sebelum memulai pembacaan baris file dari input. Action END akan melakukannya setelah selesai membaca dan memproses baris dalam input.

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

Dari contoh diatas, pertama field $1 adalah ID karyawan. Jadi jika $1 lebih besar dari 1000002, maka lakukan action default print untuk mencetak semua baris.


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.

root@laborate:/home/apocalypsix/awk# awk '$4 ~/IT/' pegawai.txt
1000002 Pepi    Developer       IT              Rp.3.000.000
1000003 Desi    Sysadmin        IT              Rp.5.000.000
1000005 Rendi   DBA             IT              Rp.7.000.000

Operator ~ adalah untuk pembanding regular expression. Jika cocok action default (Print semua baris akan dilakukan)


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! :)

Tutorial AWK di Linux / Unix


Pada artikel sebelumnya mengenai awk saya sudah sedikit menjelaskan apa itu awk. Perlu diketahui lagi, dari beberapa referensi yang saya dapat bahwa AWK itu ternyata sebuah singkatan dari pembuat algoritma pengurai ini. AWK diambil dari inisial ketiga pembuatnya yaitu “Aho, Weinberger, and Kernighan”. Awk paling sering digunakan untuk me-scan dan mem-proses sebuah pola. Pencarian pada sebuah file yang cocok dengan pola yang dibuat lalu menyaring pencarian tersebut kedalam sebuah file baru.

Berikut ini adalah fitur-fitur yang dimiliki Awk :
  • 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

Awk membaca dari sebuah file atau dari input standard, dan menjadikannya output standard. Awk tidak bisa digunakan pada file yang tidak mengandung text.

syntax :
awk '/search pattern1/ {action}
     /search pattern2/ {action}' file
 

Dari syntax awk diatas, artinya :
  • Pencarian pola adalah merupakan regular expression
  • Action - statements atau keputusan yang akan diambil
  • Awk bisa memungkinkan kita untuk membuat banyak pola dan banyak action

Cara kerja Awk 
  • 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 (;) 

Mari kita praktekan, meskipun algoritma awk ini ada pada linux maupun unix, saya menggunakan Ubuntu 12.04. Pertama, kita buat file yang berisi seperti ini :

root@laborate:/home/apocalypsix/awk# cat 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 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

Pada contoh diatas kita tidak membuat sebuah pola, jadi action ini berlaku untuk semua baris tanpa penyaringan. Action print tanpa argumen akan mencetak semua baris juga secara default, jadi ini mencetak semua baris dari file tersebut. Statement action harus berada dalam kurung kurawal seperti contoh diatas.


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.

root@laborate:/home/apocalypsix/awk# awk '{print $2,$5;}' pegawai.txt
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
root@laborate:/home/apocalypsix/awk# awk '{print $2,$NF;}' pegawai.txt
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

Dari contoh diatas $2 dan $5 mewakili Nama dan Gaji. Kita bias mendapatkan gaji menggunakan $NF juga, dimana $NF mewakili field terakhir.


 Contoh 4 : Inisialisasi dan Final Action



Awk memiliki 2 pola penting yang dibuat spesifik berdasarkan kata kunci yang disebut BEGIN dan END.

Syntax:

BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }

# is for comments in Awk

Action yang spesifik pada bagian BEGIN akan meng-eksekusi sebelum memulai pembacaan baris file dari input. Action END akan melakukannya setelah selesai membaca dan memproses baris dalam input.

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

Dari contoh diatas, pertama field $1 adalah ID karyawan. Jadi jika $1 lebih besar dari 1000002, maka lakukan action default print untuk mencetak semua baris.


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.

root@laborate:/home/apocalypsix/awk# awk '$4 ~/IT/' pegawai.txt
1000002 Pepi    Developer       IT              Rp.3.000.000
1000003 Desi    Sysadmin        IT              Rp.5.000.000
1000005 Rendi   DBA             IT              Rp.7.000.000

Operator ~ adalah untuk pembanding regular expression. Jika cocok action default (Print semua baris akan dilakukan)


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! :)