Cara Menggunakan Ekspresi Majemuk dengan Awk di Linux - Bagian 5


Selama ini kita telah melihat ekspresi sederhana ketika memeriksa apakah suatu kondisi telah terpenuhi atau tidak. Bagaimana jika Anda ingin menggunakan lebih dari satu ekspresi untuk memeriksa kondisi tertentu?

Dalam artikel ini, kita akan melihat bagaimana Anda dapat menggabungkan beberapa ekspresi yang disebut ekspresi gabungan untuk memeriksa kondisi saat memfilter teks atau string.

Di Awk, ekspresi gabungan dibuat menggunakan && yang disebut sebagai (and) dan | | disebut sebagai operator gabungan (atau).

Sintaks umum untuk ekspresi majemuk adalah:

( first_expression ) && ( second_expression )

Di sini, ekspresi_pertama dan ekspresi_kedua harus benar agar seluruh ekspresi menjadi benar.

( first_expression ) || ( second_expression) 

Di sini, salah satu ekspresi ekspresi_pertama atau ekspresi_kedua harus benar agar seluruh ekspresi benar.

Perhatian: Ingatlah untuk selalu menyertakan tanda kurung.

Ekspresi dapat dibuat menggunakan operator perbandingan yang kita lihat di Bagian 4 dari seri awk.

Sekarang mari kita mendapatkan pemahaman yang jelas menggunakan contoh di bawah ini:

Dalam contoh ini, kita memiliki file teks bernama tecmint_deals.txt, yang berisi daftar beberapa transaksi acak Tecmint yang luar biasa, termasuk nama transaksi, harga dan jenisnya.

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

Katakanlah kita hanya ingin mencetak dan menandai transaksi yang bernilai di atas $20 dan bertipe “Tech ” menggunakan tanda (**) di akhir dari setiap baris.

Kita perlu menjalankan perintah di bawah ini.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

Dalam contoh ini, kami telah menggunakan dua ekspresi dalam ekspresi gabungan:

  1. Ekspresi pertama, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; memeriksa garis untuk transaksi dengan harga di atas $20, dan hanya benar jika nilai $3 yang merupakan harga cocok dengan pola /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
  2. Dan ekspresi kedua, ($4 == “Tech”) ; memeriksa apakah transaksi tersebut berjenis “Tech ” dan hanya berlaku jika nilai $4 sama dengan “Tech ”.

Ingat, sebuah baris hanya akan ditandai dengan (**), jika ekspresi pertama dan ekspresi kedua benar sebagaimana dinyatakan dalam prinsip operator &&.

Ringkasan

Beberapa kondisi selalu mengharuskan pembuatan ekspresi gabungan agar Anda cocok dengan apa yang Anda inginkan. Ketika Anda memahami penggunaan operator perbandingan dan ekspresi gabungan, memfilter teks atau string berdasarkan beberapa kondisi sulit akan menjadi mudah.

Semoga panduan ini bermanfaat bagi Anda dan untuk pertanyaan atau tambahan apa pun, selalu ingat untuk meninggalkan komentar dan kekhawatiran Anda akan teratasi.