Cara Menggunakan Ekspresi Kompaun Dengan Awk di Linux - Bahagian 5

Cara Menggunakan Ekspresi Kompaun Dengan Awk di Linux - Bahagian 5

Seluruhnya, kami telah melihat ekspresi mudah ketika memeriksa sama ada keadaan telah bertemu atau tidak. Bagaimana jika anda mahu menggunakan lebih banyak maka satu ungkapan untuk memeriksa keadaan tertentu di?

Dalam artikel ini, kita akan melihat bagaimana anda boleh menggabungkan pelbagai ungkapan yang dirujuk sebagai ungkapan kompaun untuk memeriksa keadaan semasa penapisan teks atau rentetan.

Dalam Awk, Ekspresi kompaun dibina menggunakan && dirujuk sebagai (dan) dan juga || dirujuk sebagai (atau) pengendali kompaun.

Sintaks umum untuk ekspresi kompaun adalah:

(first_expression) && (second_expression) 

Di sini, First_expression dan Second_expression Mesti benar untuk menjadikan keseluruhan ungkapan benar.

(first_expression) || (Second_expression) 

Di sini, salah satu ungkapan sama ada First_expression atau Second_expression Mesti benar untuk keseluruhan ungkapan menjadi kenyataan.

Berhati -hati: Ingat untuk selalu memasukkan kurungan.

Ekspresi boleh dibina menggunakan pengendali perbandingan yang kita lihat dalam bahagian 4 siri AWK.

Marilah kita dapatkan pemahaman yang jelas menggunakan contoh di bawah:

Dalam contoh ini, mempunyai fail teks bernama tecmint_deals.txt, yang mengandungi senarai beberapa tawaran Tecmint rawak yang menakjubkan, ia termasuk nama perjanjian, harga dan jenis.

Senarai Deal Tecmint
Tiada Nama Harga Jenis 1 MAC_OS_X_CLEANUP_SUITE $ 9.99 perisian 2 BASICS_NOTEBook $ 14.99 gaya hidup 3 taktikal_pen $ 25.99 Gaya Hidup 4 Scapple $ 19.00 tidak diketahui 5 nano_tool_pack $ 11.99 tidak diketahui 6 ditto_bluetooth_altering_device $ 33.00 teknologi 7 nano_prowler_mini_drone $ 36.99 Tech 

Katakan bahawa kami hanya mahu cetak dan tawaran bendera yang ada di atas $ 20 dan jenis "Tech" menggunakan (**) menandatangani pada akhir setiap baris.

Kita perlu menjalankan arahan di bawah.

# 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 ungkapan dalam ungkapan kompaun:

  1. Ungkapan pertama, ($ 3 ~ /^\ $ [2-9] [0-9]*\.[0-9] [0-9] $/) ; memeriksa garis dengan tawaran dengan harga di atas $ 20, dan hanya benar jika nilai $ 3 yang mana harga sepadan dengan corak /^\ $ [2-9] [0-9]*\.[0-9] [0-9] $/
  2. Dan ungkapan kedua, ($ 4 == "Tech") ; memeriksa sama ada perjanjian itu adalah jenis "Tech" dan hanya benar jika nilai $ 4 sama dengan "Tech".

Ingat, garis hanya akan ditandakan dengan (**), jika ungkapan pertama dan ungkapan kedua benar seperti menyatakan prinsip && pengendali.

Ringkasan

Beberapa syarat selalu memerlukan ekspresi kompaun bangunan untuk anda sesuai dengan apa yang anda mahukan. Apabila anda memahami penggunaan perbandingan dan pengendali ekspresi kompaun, penapisan teks atau rentetan berdasarkan beberapa keadaan yang sukar akan menjadi mudah.

Harap anda dapati panduan ini berguna dan untuk sebarang pertanyaan atau penambahan, selalu ingat untuk meninggalkan komen dan kebimbangan anda akan diselesaikan dengan sewajarnya.