GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Awk:Memahami Variabel Awk dengan 3 Contoh Praktis

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.


Linux
  1. Tutorial Pengenalan Awk – 7 Contoh Cetak Awk

  2. Array AWK Dijelaskan dengan 5 Contoh Praktis

  3. Referensi Array Perl dan Tutorial Dereference Dengan Contoh Praktis

  1. Tutorial Bash HereDoc Dengan Contoh

  2. Tutorial Status Keluar Bash Shell dengan Contoh Praktis

  3. Perintah Gema dengan Contoh Praktis

  1. Perintah AWK di Linux dengan Contoh

  2. Tutorial Perintah Awk Linux/UNIX dengan Contoh

  3. Tutorial Perintah Linux zforce dengan Contoh