Cara menggunakan ekspresi majemuk dengan awk di linux - bagian 5

Cara menggunakan ekspresi majemuk dengan awk di linux - bagian 5

Selama ini, kami telah melihat ekspresi sederhana saat memeriksa apakah suatu kondisi telah bertemu atau tidak. Bagaimana jika Anda ingin menggunakan lebih dari satu ekspresi untuk memeriksa kondisi tertentu di?

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

Di dalam AWK, Ekspresi majemuk dibangun menggunakan && disebut sebagai (Dan) dan || disebut sebagai (atau) operator majemuk.

Sintaks umum untuk ekspresi majemuk adalah:

(first_expression) && (Second_Expression) 

Di Sini, First_expression Dan Second_expression harus benar untuk mewujudkan seluruh ekspresi.

(first_expression) || (Second_Expression) 

Di sini, salah satu ekspresi juga First_expression atau Second_expression harus benar agar seluruh ekspresi benar.

Peringatan: Ingatlah untuk selalu memasukkan tanda kurung.

Ekspresi dapat dibangun menggunakan operator perbandingan yang kami lihat di bagian 4 dari seri AWK.

Mari kita dapatkan pemahaman yang jelas menggunakan contoh di bawah ini:

Dalam contoh ini, memiliki file teks bernama tecmint_deals.txt, Yang berisi daftar beberapa penawaran tecmint acak yang luar biasa, itu termasuk nama kesepakatan, harga dan jenisnya.

Daftar Kesepakatan Tecmint
Tidak Ada Nama Harga Jenis 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 tidak diketahui 5 nano_tool_pack $ 11.99 tidak diketahui 6 ditto_bluetooth_altering_device $ 33.00 Tech 7 nano_prowler_mini_drone $ 36.99 Tech 

Katakan bahwa kami hanya ingin penawaran cetak dan bendera yang ada di atas $ 20 dan tipe "Tech" menggunakan (**) Masuk di akhir setiap baris.

Kita harus 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 majemuk:

  1. Ekspresi pertama, ($ 3 ~ /^\ $ [2-9] [0-9]*\.[0-9] [0-9] $/) ; Memeriksa jalur untuk penawaran dengan harga di atas $ 20, dan memang benar jika nilainya $ 3 yang harganya cocok dengan polanya /^\ $ [2-9] [0-9]*\.[0-9] [0-9] $/
  2. Dan ungkapan kedua, ($ 4 == "Tech") ; memeriksa apakah kesepakatannya "Tech" dan memang benar jika nilainya $ 4 sama dengan "Tech".

Ingat, garis hanya akan ditandai dengan (**), jika ekspresi pertama Dan ekspresi kedua benar seperti menyatakan prinsip && operator.

Ringkasan

Beberapa kondisi selalu memerlukan ekspresi senyawa bangunan agar Anda cocok dengan apa yang Anda inginkan. Saat Anda memahami penggunaan perbandingan dan operator ekspresi senyawa, menyaring teks atau string berdasarkan beberapa kondisi yang sulit akan menjadi mudah.

Semoga Anda menemukan panduan ini bermanfaat dan untuk pertanyaan atau penambahan, selalu ingat untuk meninggalkan komentar dan kekhawatiran Anda akan diselesaikan sesuai.