Cara Menggunakan Operator Perbandingan dengan Awk di Linux - Part 4


Saat menangani nilai numerik atau string dalam satu baris teks, memfilter teks atau string menggunakan operator perbandingan akan berguna bagi pengguna perintah Awk.

Di bagian seri Awk ini, kita akan melihat bagaimana Anda dapat memfilter teks atau string menggunakan operator perbandingan. Jika Anda seorang programmer pasti sudah familiar dengan operator perbandingan, namun bagi yang belum, izinkan saya menjelaskannya pada bagian di bawah ini.

Apa itu operator perbandingan di Awk?

Operator perbandingan di Awk digunakan untuk membandingkan nilai angka atau string dan mencakup hal berikut:

  1. > – lebih besar dari
  2. < – kurang dari
  3. >= – lebih besar dari atau sama dengan
  4. <= – kurang dari atau sama dengan
  5. == – sama dengan
  6. != – tidak sama dengan
  7. some_value ~/pattern/ – benar jika some_value cocok dengan pola
  8. some_value !~/pattern/ – benar jika some_value tidak cocok dengan pola

Sekarang kita telah melihat berbagai operator perbandingan di Awk, mari kita memahaminya dengan lebih baik menggunakan sebuah contoh.

Dalam contoh ini, kita memiliki file bernama food_list.txt yang merupakan daftar belanja berbagai jenis makanan dan saya ingin menandai item makanan yang jumlahnya kurang dari atau sama dengan 20 dengan menambahkan ( **) di akhir setiap baris.

No      Item_Name               Quantity        Price
1       Mangoes                    45           $3.45
2       Apples                     25           $2.45
3       Pineapples                 5            $4.45
4       Tomatoes                   25           $3.45
5       Onions                     15           $1.45
6       Bananas                    30           $3.45

Sintaks umum untuk menggunakan operator perbandingan di Awk adalah:

expression { actions; }

Untuk mencapai tujuan di atas, saya harus menjalankan perintah di bawah ini:

# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt

No	Item_Name`		Quantity	Price
1	Mangoes	      		   45		$3.45
2	Apples			   25		$2.45	**
3	Pineapples		   5		$4.45	**
4	Tomatoes		   25		$3.45	**
5	Onions			   15           $1.45	**
6	Bananas			   30           $3.45	**

Pada contoh di atas, ada dua hal penting yang terjadi:

  1. Ekspresi pertama { action ; kombinasi }, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } mencetak garis dengan jumlah kurang dari atau sama dengan 30 dan menambahkan (**) di akhir setiap baris. Nilai kuantitas diakses menggunakan variabel kolom $3.
  2. Ekspresi kedua { action ; kombinasi }, $3 > 30 { print $0 ;} mencetak garis tanpa perubahan karena kuantitasnya lebih besar dari 30.

Satu contoh lagi:

# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 

No	Item_Name		Quantity	Price
1	Mangoes			   45		$3.45
2	Apples			   25		$2.45
3	Pineapples		   5		$4.45	TRUE
4	Tomatoes		   25		$3.45
5	Onions			   15           $1.45	TRUE
6       Bananas	                   30           $3.45

Dalam contoh ini, kami ingin menunjukkan baris dengan kuantitas kurang dari atau sama dengan 20 dengan kata (TRUE) di akhir.

Ringkasan

Ini adalah tutorial pengantar tentang operator perbandingan di Awk, oleh karena itu Anda perlu mencoba banyak opsi lain dan menemukan lebih banyak.

Jika ada masalah yang Anda hadapi atau tambahan apa pun yang Anda pikirkan, berikan komentar di bagian komentar di bawah. Ingatlah untuk membaca bagian selanjutnya dari seri Awk di mana saya akan membawa Anda melalui ekspresi majemuk.