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:
>
– büyüktür– küçük >=
– büyük veya eşittir<=
– küçük veya eşittir==
– eşittir!=
– eşit değilbir_değer ~/desen/
– bazı_değerler kalıpla eşleşiyorsa doğrudurbir_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:
- İ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.
- İ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.