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.