I. Pendahuluan
Awk adalah bahasa pemrograman yang digunakan untuk melakukan manipulasi data dan membuat laporan. Nama awk diambil dari nama akhir pembuatnya yaitu Alfred Aho, Peter Weinberger, dan Brian Kerningham. Awk mempunyai beberapa versi yaitu awk versi pertama (awk), kemudian nawk atau new version of awk dan versi awk yang merupakan implementasi dari GNU Project yang disebut dengan gawk dengan standar POSIX 1003.2 untuk bahasa pemrograman dan utilitas, BWK awk, xgawk, mawk dan lain sebagainya. Pada beberapa sistem seperti linux, awk di-link-kan ke versi terbaru yang digunakan. Misalnya dalam distribusi Linux redhat, gawk merupakan link dari awk, sehingga keduanya sama.
Awk dapat digunakan baik dalam command line maupun dimasukkan dalam sebuah skrip dengan melakukan scan baris per baris seperti pada sed yang diperoleh dari standar input, file maupun output proses.
III. Record dan Field Dalam AWK
Awk dapat digunakan baik dalam command line maupun dimasukkan dalam sebuah skrip dengan melakukan scan baris per baris seperti pada sed yang diperoleh dari standar input, file maupun output proses.
II. Struktur dasar Awk
Instruksi-instruksi awk terdiri atas pattern dan action atau gabungan keduanya. Sintaks yang digunakan sebagai berikut:
Agar lebih memahami tentang awk, maka buatlah file dengan nama coin lalu isi file tersebut dengan data-data di bawah ini:
$ awk 'pattern' input
$ awk '{action}' input
$ awk 'pattern {action}' input
Dua pattern yang sering digunakan adalah BEGIN dan ENDAgar lebih memahami tentang awk, maka buatlah file dengan nama coin lalu isi file tersebut dengan data-data di bawah ini:
bronze 1 1986 USA American Eagle gold 1 1908 Austria-Hungary Franz Josef 100 Korona silver 0.75 1981 USA ingot gold 1 1984 Switzerland ingot gold 1 1979 RSA Krugerrand bronze 0.5 1981 RSA Krugerrand gold 0.1 1986 PRC Panda silver 1 1986 USA Liberty dollar gold 0.25 1986 USA Liberty 5-dollar piece silver 0.5 1986 USA Liberty 50-cent piece silver 1 1987 USA Constitution dollar gold 0.25 1987 USA Constitution 5-dollar piece bronze 1 1988 Canada Maple Leaf
III. Record dan Field Dalam AWK
Dalam menangani input, awk tidak hanya melihatnya sebagai karakter string tetapi awk mempunyai format dan struktur tersendiri. Penanganan tersebut dilakukan berdasarkan record dan field
A. Record
Record dalam awk adalah setiap baris dari input, sehingga jika ditemui baris baru, akan dianggap sebagai record baru. Enter di dalam sebuah file dianggap sebagai pemisah antar
record. Untuk melihat jumlah record awk, awk juga menyediakan perintah NR (Number of Record). Contohnya adalah sebagai berikut:
record. Untuk melihat jumlah record awk, awk juga menyediakan perintah NR (Number of Record). Contohnya adalah sebagai berikut:
# awk '{print NR, $0}' coin

B. Field
Field merupakan bagian yang menyusun sebuah record. Jadi, bisa dikatakan bahwa record adalah setiap kata atau kolom pada baris record. Dalam sebuah record yang terdiri atas banyak field, field biasanya dibatasi oleh spasi atau tab. Field ditandai dengan tanda variabel $1-$n dimana $1 menunjukkan field pertama, dan seterusnya. awk menyediakan
instruksi untuk melihat jumlah field dalam record yaitu NF (Number of Field).
instruksi untuk melihat jumlah field dalam record yaitu NF (Number of Field).
# awk '{print NF, $0}' coin

Dari baris pertama dilihat bahwa ada 6 field, baris kedua ada 8 field, dan sebagainya.
IV. Contoh-Contoh AWK
Berikut adalah contoh-contoh dari awk dengan berbagai variasi:
a. Menampilkan seluruh bagian yang mempunyai item bronze saja
a. Menampilkan seluruh bagian yang mempunyai item bronze saja

b. Menampilkan bagian item dan tahun saja untuk item silver

Seperti dilihat dicontoh diatas bahwa awk menampilkan data metal dan tahun saja dengan
menggunakan perintah print. Jadi awk membagi sebuah file berdasarkan spasi atau tab. Jika kita ingin menampilkan seluruh bagian dari file diatas maka ketikkan:
menggunakan perintah print. Jadi awk membagi sebuah file berdasarkan spasi atau tab. Jika kita ingin menampilkan seluruh bagian dari file diatas maka ketikkan:
# awk '{print $0}' coin

Untuk menampilkan seluruh deskripsi dari sebuah metal, maka ketikkan:
# awk '{print $1,$5,$6,$7,$8}' coin

c. awk dapat menampilkan sebuah output hasil dari operasi logika (!,||,&&)

d. awk dapat menampilkan sebuah output dari hasil ekspresi kondisi (if)
e. awk dapat menampilkan sebuah output dari hasil operasi relasi (<,>,<=.>=,==,!=)

f. awk dapat menampilkan sebuah output dari hasil aritmatika

g. seperti halnya sed, awk juga dapat dituliskan dalam sebuah skrip awk yang berisi instruksi-instruksi awk tanpa awk itu sendiri. Buatlah sebuah file yang bernama summary dan isi filenya sebagai berikut:
# This is an awk program that summarizes a coin collection.
#
/gold/ { num_gold++; wt_gold += $2 } # Get weight of gold.
/silver/ { num_silver++; wt_silver += $2 } # Get weight of silver.
/bronze/ { num_bronze++; wt_silver += $2 } # Get weight of bronze
END { val_gold = 485 * wt_gold; # Compute value of gold.
val_silver = 16 * wt_silver; # Compute value of silver.
total = val_gold + val_silver;
print "Summary data for coin collection:"; # Print results.
printf ("\n");
printf (" Gold pieces: %2d\n", num_gold);
printf (" Weight of gold pieces: %5.2f\n", wt_gold);
printf (" Value of gold pieces: %7.2f\n",val_gold);
printf ("\n");
printf (" Silver pieces: %2d\n", num_silver);
printf (" Weight of silver pieces: %5.2f\n", wt_silver);
printf (" Value of silver pieces: %7.2f\n",val_silver);
printf ("\n");
printf (" Bronze pieces: %2d\n", num_gold);
printf (" Weight of bronze pieces: %5.2f\n", wt_gold);
printf (" Value of bronze pieces: %7.2f\n",val_gold);
printf ("\n");
printf (" Total number of pieces: %2d\n", NR);
printf (" Value of collection: %7.2f\n", total); }
Untuk melihat hasilnya, ketikkan dengan format sebagai berikut:# awk -f nama_file_skrip input_file
Dalam kasus kita:
# awk -f summary coin

V. Ekspresi Reguler
Sama seperti sed, awk juga dapat menggunakan ekspresi reguler untuk menampilkan sebuah output.
| Sintaks | Keterangan |
| /regexp/ | Mencocokan inputan dengan regexp yang diberikan |
| expression ~ /regexp/ | Mencocokan apakah string expression berisi substring dari regexp |
| expression !~ /regexp/ | Mencocokan apakah string expression tidak berisi substring dari regexp |
Berikut adalah metakarakter ekspresi reguler awk:
| Metakarakter | Penjelasan | Contoh |
| ^ | Baris yang diawali oleh kata setelah tanda ini | ^nama |
| $ | Baris yang diakhiri oleh kata sebelum tanda ini | nama$ |
| . | Digunakan untuk mewakili tepat satu karakter | n..a |
| * | Dapat mewakili satu atau banyak karakter | na* |
| [] | Untuk mengelompokkan karakter yang bisa diganti misalnya mencari Nama atau nama | [Nn]ama |
| [^] | Mencari kata yang tidak mengandung karakter didalamnya | [^A-MO-Z]ama |
Contoh-contoh awk yang menggunakan ekspresi reguler adalah sebagai berikut:
a. Menampilkan output yang hanya menampilkan item yang berawalan sil

b. Menampilkan output selain yang berakhiran old

c. Menampilkan output selain dari negara USA

VI. Mengambil dari Kalimat
Contoh-contoh di atas sudah dapat dilihat bahwa kita dapat mengambil sebuah kata dari sebuah paragraf yang terdiri dari beberapa kata. Sekarang bagaimana caranya agar kita mengambil sebuah karakter (huruf atau angka) dari sebuah kata? Untuk melakukan hal tersebut, kita harus mengikuti format:substr ($s,a,b)dimana $s adalah string, a adalah dimulai dari posisi keberapa, dan b adalah diakhiri sampai posisi keberapa. Misalnya kita mempunyai sebuah kalimat "Aku Cinta Negara Indonesia" yang berada di file lat1. Kita ingin hanya mengambil kata "Indon" saja dari kata Indonesia, maka kita menggunakan perintah:
# awk '{print substr($4,1,5)}' lat1
Maka kata Indon akan tercetak di layar kita.Referensi:
Bash Scripting Untuk Administrasi Sistem Linux, Rofiq Yuliardihttp://en.wikipedia.org
http://osr507doc.sco.com
http://www.vectorsite.net
http://unix-simple.blogspot.com/
5 Syaban 1430 H
28 Juli 2009 M
| Comments |
|
|
|||||||||||
|
|||||||||||
Powered by !JoomlaComment 3.26














Dear Accank, Hal itu tergantung dari...
Dear Ronald, Terima kasih atas saran...
Untuk pengguna debian 6.0 (squeeze) d...
mas sy ingin bertanya,dari semua netw...
Dear Syukran, Mungkin hadits ini bis...