Artikel ini adalah bagian dari seri Tutorial dan Contoh Awk yang sedang berlangsung. Seperti bahasa pemrograman lainnya, Awk juga memiliki variabel yang ditentukan pengguna dan variabel bawaan.
Dalam artikel ini mari kita tinjau cara mendefinisikan dan menggunakan variabel awk .
- Variabel awk harus dimulai dengan huruf, diikuti dengan karakter numerik alfa atau garis bawah.
- Kata kunci tidak dapat digunakan sebagai variabel awk
- Awk tidak mendukung deklarasi variabel seperti bahasa pemrograman lainnya
- Selalu lebih baik untuk menginisialisasi variabel awk di bagian BEGIN, yang hanya akan dieksekusi sekali di awal.
- Tidak ada tipe data di Awk. Apakah variabel awk diperlakukan sebagai angka atau sebagai string bergantung pada konteks penggunaannya.
Sekarang mari kita tinjau beberapa contoh sederhana untuk mempelajari cara menggunakan variabel awk yang ditentukan pengguna.
Contoh Awk 1:Penagihan untuk Buku
Dalam contoh ini, file input bookdetails.txt berisi catatan dengan bidang — nomor item, Nama buku, Kuantitas, dan Tarif per buku.
$ cat bookdetails.txt 1 Linux-programming 2 450 2 Advanced-Linux 3 300 3 Computer-Networks 4 400 4 OOAD&UML 3 450 5 Java2 5 200
Sekarang skrip Awk berikut, membaca dan memproses file bookdetails.txt di atas, dan menghasilkan laporan yang menampilkan — tarif setiap buku yang terjual, dan jumlah total untuk semua buku yang terjual.
Sejauh ini kita telah melihat Awk membaca perintah dari baris perintah, tetapi Awk juga dapat membaca perintah dari file menggunakan opsi -f.
Syntax: $ awk -f script-filename inputfilename
Sekarang skrip Awk kami untuk perhitungan penagihan untuk buku diberikan di bawah ini.
$ cat book-calculation.awk BEGIN { total=0; } { itemno=$1; book=$2; bookamount=$3*$4; total=total+bookamount; print itemno," ", book,"\t","$"bookamount; } END { print "Total Amount = $"total; }
Dalam skrip di atas,
- Awk MULAI bagian menginisialisasi total variabel. itemno, total, book, bookamount adalah variabel awk yang ditentukan pengguna.
- Dalam Aksi A bagian, Quantity*bookprice akan disimpan dalam variabel yang disebut bookamount. Setiap bookamount akan ditambah dengan totalnya.
- Akhirnya di Awk END bagian, variabel total akan memiliki jumlah total.
Sekarang jalankan skrip book-calculation.awk untuk menghasilkan laporan yang menampilkan setiap tarif buku dan jumlah total seperti yang ditunjukkan di bawah ini.
$ awk -f book-calculation.awk bookdetails.txt 1 Linux-programming $900 2 Advanced-Linux $900 3 Computer-Networks $1600 4 OOAD&UML $1350 5 Java2 $1000 Total Amount = $5750
Contoh Awk 2. Perhitungan Nilai Siswa
Dalam contoh ini, buat file input “student-marks.txt” dengan konten berikut — Nama siswa, Nomor Gulungan, skor Tes1, skor Tes2, dan skor Tes3.
$ cat student-marks.txt Jones 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 65 Edwin 2537 78 67 45 Dayan 2415 30 47 20
Sekarang skrip Awk berikut akan menghitung dan menghasilkan laporan untuk menunjukkan nilai Rata-rata setiap siswa, rata-rata nilai Tes1, Tes2 dan Tes3.
$cat student.awk BEGIN { test1=0; test2=0; test3=0; print "Name\tRollNo\t Average Score"; } { total=$3+$4+$5; test1=test1+$3; test2=test2+$4; test3=test3+$5; print $1"\t"$2"\t",total/3; } END{ print "Average of Test1="test1/NR; print "Average of Test2="test2/NR; print "Average of Test3="test3/NR; }
Dalam skrip Awk di atas,
- Dalam Awk MULAI bagian semua variabel awk diinisialisasi ke nol. test1, test2, test3, dan total adalah variabel awk yang ditentukan pengguna.
- Dalam TINDAKAN Awk bagian, $3, $4, $5 masing-masing adalah skor Test1, Test2 dan Test3. variabel total adalah penambahan 3 nilai tes untuk setiap siswa. Variabel awk test1, test2 dan test3 memiliki skor total dari setiap tes yang sesuai.
- Jadi di Awk END bagian, membagi setiap total tes dengan jumlah total catatan (yaitu siswa) akan memberi Anda skor rata-rata. NR adalah variabel bawaan Awk yang memberikan jumlah total catatan yang dimasukkan.
Contoh Awk 3. Laporan HTML untuk Detail Siswa
Dalam dua contoh di atas, kita telah melihat variabel awk yang memiliki angka sebagai nilainya. Contoh ini menunjukkan skrip awk untuk menghasilkan laporan html untuk nama siswa dan nomor roll mereka.
$ cat string.awk BEGIN{ title="AWK"; print "<html>\n<title>"title"</title><body bgcolor=\"#ffffff\">\n<table border=1><th colspan=2 align=centre>Student Details</th>"; } { name=$1; rollno=$2; print "<tr><td>"name"</td><td>"rollno"</td></tr>"; } END { print "</table></body>\n</html>"; }
Gunakan file input student-marks.txt yang sama dengan yang kita buat pada contoh di atas.
$ awk -f string.awk student-marks.txt <html> <title>AWK</title><body bgcolor="#ffffff"> <table border=1><th colspan=2 align=centre>Student Details</th> <tr><td>Jones</td><td>2143</td></tr> <tr><td>Gondrol</td><td>2321</td></tr> <tr><td>RinRao</td><td>2122</td></tr> <tr><td>Edwin</td><td>2537</td></tr> <tr><td>Dayan</td><td>2415</td></tr> </table></body> </html>
Kita dapat menyimpan output di atas, yang memberikan tabel html berikut. Pada script di atas, variabel bernama name dan rollno merupakan variabel string, karena digunakan dalam konteks string.
Student Details | |
---|---|
Jones | 2143 |
Gondrol | 2321 |
RinRao | 2122 |
Edwin | 2537 |
Dayan | 2415 |
Bacaan yang Disarankan
Sed dan Awk 101 Hacks, oleh Ramesh Natarajan . Saya menghabiskan beberapa jam sehari di lingkungan UNIX / Linux yang berurusan dengan file teks (data, konfigurasi, dan file log). Saya menggunakan Sed dan Awk untuk semua pekerjaan manipulasi teks saya. Berdasarkan pengalaman Sed dan Awk saya, saya telah menulis eBook Sed dan Awk 101 Hacks yang berisi 101 contoh praktis tentang berbagai fitur canggih Sed dan Awk yang akan meningkatkan kehidupan UNIX / Linux Anda. Bahkan jika Anda telah menggunakan Sed dan Awk selama beberapa tahun dan belum membaca buku ini, bantulah diri Anda sendiri dan baca buku ini. Anda akan kagum dengan kemampuan utilitas Sed dan Awk.