Linux'ta Awk ile Bileşik İfadeler Nasıl Kullanılır - Bölüm 5


Başından beri bir koşulun karşılanıp karşılanmadığını kontrol ederken basit ifadelere bakıyorduk. Belirli bir koşulu kontrol etmek için birden fazla ifade kullanmak isterseniz ne olur?

Bu makalede, metin veya dizeleri filtrelerken bir koşulu kontrol etmek için bileşik ifadeler olarak adlandırılan birden çok ifadeyi nasıl birleştirebileceğinize bir göz atacağız.

Awk'da, bileşik ifadeler, (and) olarak adlandırılan && ve | kullanılarak oluşturulur. |, (veya) bileşik operatörleri olarak anılır.

Bileşik ifadelerin genel sözdizimi şöyledir:

( first_expression ) && ( second_expression )

Burada, ifadenin tamamının doğru olması için ilk_ifade ve ikinci_ifade doğru olmalıdır.

( first_expression ) || ( second_expression) 

Burada, ifadenin tamamının doğru olması için ilk_ifade veya ikinci_ifade ifadelerinden birinin doğru olması gerekir.

Dikkat: Her zaman parantez eklemeyi unutmayın.

İfadeler, awk serisinin 4. Bölümünde incelediğimiz karşılaştırma operatörleri kullanılarak oluşturulabilir.

Şimdi aşağıdaki örneği kullanarak konuyu net bir şekilde anlayalım:

Bu örnekte, bazı şaşırtıcı rastgele Tecmint fırsatlarının bir listesini içeren tecmint_deals.txt adında bir metin dosyası var; anlaşmanın adını, fiyatını ve türünü içeriyor.

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 

Yalnızca 20$'ın üzerinde olan ve "Teknoloji" türündeki anlaşmaları yazdırmak istediğimizi ve sonunda (**) işaretini kullanarak işaretlediğimizi varsayalım. her satırın.

Aşağıdaki komutu çalıştırmamız gerekecek.

# 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	 *

Bu örnekte bileşik bir ifadede iki ifade kullandık:

  1. İlk ifade, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; fiyatı $20'nin üzerinde olan anlaşmaların bulunduğu satırları kontrol eder ve bu yalnızca fiyat olan $3 değeri /^\$[ modeliyle eşleşirse doğrudur. 2-9][0-9]*\.[0-9][0-9]$/
  2. Ve ikinci ifade, ($4 == “Tech”) ; anlaşmanın “Teknoloji ” türünde olup olmadığını kontrol eder ve yalnızca 4 ABD Doları değeri “Teknoloji ”'ye eşitse doğrudur.

Bir satırın yalnızca ilk ifade ve ikinci ifade ilkesini belirttiği şekilde doğru olması durumunda (**) ile işaretleneceğini unutmayın. && operatörü.

Özet

Bazı koşullar, tam olarak istediğiniz şeyle eşleşmeniz için her zaman bileşik ifadeler oluşturmanızı gerektirir. Karşılaştırma ve bileşik ifade operatörlerinin kullanımını anladığınızda, metin veya dizeleri bazı zor koşullara göre filtrelemek kolaylaşacaktır.

Bu kılavuzu yararlı bulacağınızı umarız ve herhangi bir soru veya ekleme için her zaman yorum bırakmayı unutmayın; endişeniz buna göre çözülecektir.