Linux'ta Awk ile Karşılaştırma Operatörleri Nasıl Kullanılır - Bölüm 4


Bir metin satırındaki sayısal veya dize değerleriyle uğraşırken, metni veya dizeleri karşılaştırma işleçleri kullanarak filtrelemek Awk komutu kullanıcıları için kullanışlı olur.

Awk serisinin bu bölümünde karşılaştırma operatörlerini kullanarak metni veya dizeleri nasıl filtreleyebileceğinize bir göz atacağız. Eğer bir programcıysanız, karşılaştırma operatörlerine zaten aşina olmalısınız, ancak bilmeyenler için aşağıdaki bölümde açıklamama izin verin.

Awk'taki Karşılaştırma operatörleri nelerdir?

Awk'taki karşılaştırma operatörleri sayıların veya dizelerin değerini karşılaştırmak için kullanılır ve aşağıdakileri içerir:

  1. > – büyüktür
  2. – küçük
  3. >= – büyük veya eşittir
  4. <= – küçük veya eşittir
  5. == – eşittir
  6. != – eşit değil
  7. bir_değer ~/desen/ – bazı_değerler kalıpla eşleşiyorsa doğrudur
  8. bir_değer !~/desen/ – bazı_değerler kalıpla eşleşmiyorsa doğrudur

Artık Awk'taki çeşitli karşılaştırma operatörlerine baktığımıza göre, bir örnek kullanarak bunları daha iyi anlayalım.

Bu örnekte, farklı gıda maddelerinin alışveriş listesi olan food_list.txt adında bir dosyamız var ve miktarı 20'ye eşit veya daha az olan gıda maddelerini ( ekleyerek işaretlemek istiyorum. **) her satırın sonunda.

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

Awk'ta karşılaştırma işleçlerini kullanmanın genel sözdizimi şöyledir:

expression { actions; }

Yukarıdaki hedefe ulaşmak için aşağıdaki komutu çalıştırmam gerekecek:

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

Yukarıdaki örnekte gerçekleşen iki önemli şey vardır:

  1. İlk ifade { action ; kombinasyon, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; , miktarı 30'a eşit veya daha az olan satırları yazdırır ve her satırın sonuna bir (**) ekler. Miktar değerine $3 alan değişkeni kullanılarak erişilir.
  2. İkinci ifade { action ; kombinasyonu, $3 > 30 { print $0 ;, miktarları 30'dan büyük olduğundan satırları değişmeden yazdırır.

Bir örnek daha:

# 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

Bu örnekte, miktarı 20'den küçük veya eşit olan satırları sonunda (TRUE) kelimesiyle belirtmek istiyoruz.

Özet

Bu, Awk'daki operatörleri karşılaştırmaya yönelik giriş niteliğinde bir eğitimdir, bu nedenle diğer birçok seçeneği denemeniz ve daha fazlasını keşfetmeniz gerekir.

Karşılaştığınız herhangi bir sorun veya aklınıza takılan eklemeler olması durumunda aşağıdaki yorum bölümüne yorum bırakın. Awk serisinin size bileşik ifadeleri anlatacağım bir sonraki bölümünü okumayı unutmayın.