AWK - Temel Örnekler
Bu bölüm birkaç yararlı AWK komutunu ve bunların uygun örneklerini açıklamaktadır. Bir metin dosyası düşününmarks.txt aşağıdaki içerikle işlenecek -
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Sütun veya Alan Yazdırma
AWK'ya giriş alanından yalnızca belirli sütunları yazdırması talimatını verebilirsiniz. Aşağıdaki örnek bunu göstermektedir -
Misal
[jerry]$ awk '{print $3 "\t" $4}' marks.txt
Bu kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Çıktı
Physics 80
Maths 90
Biology 87
English 85
History 89
Dosyanın içinde marks.txt, üçüncü sütun konu adını ve dördüncü sütun belirli bir konuda elde edilen işaretleri içerir. AWK print komutunu kullanarak bu iki sütunu yazdıralım. Yukarıdaki örnekte,$3 and $4 giriş kaydından sırasıyla üçüncü ve dördüncü alanları temsil eder.
Tüm Satırları Yazdırma
Varsayılan olarak, AWK desenle eşleşen tüm satırları yazdırır.
Misal
[jerry]$ awk '/a/ {print $0}' marks.txt
Bu kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Çıktı
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Yukarıdaki örnekte, form kalıbı arıyoruz a. Bir model eşleşmesi başarılı olduğunda, gövde bloğundan bir komut yürütür. Bir gövde bloğunun yokluğunda - kaydı yazdıran varsayılan eylem gerçekleştirilir. Dolayısıyla, aşağıdaki komut aynı sonucu verir -
Misal
[jerry]$ awk '/a/' marks.txt
Sütunları Desene Göre Yazdırma
Bir desen eşleşmesi başarılı olduğunda, AWK varsayılan olarak tüm kaydı yazdırır. Ancak AWK'ye yalnızca belirli alanları yazdırması talimatını verebilirsiniz. Örneğin, aşağıdaki örnek, bir desen eşleşmesi başarılı olduğunda üçüncü ve dördüncü alanı yazdırır.
Misal
[jerry]$ awk '/a/ {print $3 "\t" $4}' marks.txt
Bu kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Çıktı
Maths 90
Biology 87
English 85
History 89
Herhangi Bir Sırayla Sütun Yazdırma
Sütunları istediğiniz sırada yazdırabilirsiniz. Örneğin, aşağıdaki örnek, dördüncü sütunu ve ardından üçüncü sütunu yazdırır.
Misal
[jerry]$ awk '/a/ {print $4 "\t" $3}' marks.txt
Yukarıdaki kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Çıktı
90 Maths
87 Biology
85 English
89 History
Eşleşen Deseni Sayma ve Yazdırma
Bir desen eşleşmesinin başarılı olduğu satırların sayısını sayabileceğiniz ve yazdırabileceğiniz bir örnek görelim.
Misal
[jerry]$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
Bu kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Çıktı
Count = 4
Bu örnekte, bir desen eşleşmesi başarılı olduğunda counter değerini artırıyoruz ve bu değeri END bloğuna yazdırıyoruz. Diğer programlama dillerinden farklı olarak, bir değişkeni kullanmadan önce bildirmeye gerek olmadığını unutmayın.
18 Karakterden Fazla Satır Yazdırma
Yalnızca 18'den fazla karakter içeren satırları yazdıralım.
Misal
[jerry]$ awk 'length($0) > 18' marks.txt
Bu kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Çıktı
3) Shyam Biology 87
4) Kedar English 85
AWK yerleşik bir length dizenin uzunluğunu döndüren işlev. $0değişken tüm satırı depolar ve bir gövde bloğu olmadığında, varsayılan eylem, yani yazdırma eylemi gerçekleştirilir. Dolayısıyla, bir satırda 18'den fazla karakter varsa, karşılaştırma doğru olur ve satır yazdırılır.