AWK - İş Akışı
Uzman bir AWK programcısı olmak için, onun içsel özelliklerini bilmeniz gerekir. AWK basit bir iş akışını izler - Oku, Yürüt ve Tekrarla. Aşağıdaki şema AWK'nın iş akışını göstermektedir -
Okuyun
AWK, giriş akışından (dosya, boru veya stdin) bir satırı okur ve bunu bellekte depolar.
Yürüt
Tüm AWK komutları girişe sırayla uygulanır. Varsayılan olarak AWK her satırda komutları yürütür. Bunu kalıplar sağlayarak sınırlayabiliriz.
Tekrar et
Bu işlem, dosya sonuna ulaşıncaya kadar tekrar eder.
Program Yapısı
Şimdi AWK'nın program yapısını anlayalım.
BEGIN bloğu
BEGIN bloğunun sözdizimi aşağıdaki gibidir -
Syntax
BEGIN {awk-commands}
BEGIN bloğu, program başlangıcında yürütülür. Yalnızca bir kez yürütülür. Bu, değişkenleri başlatmak için iyi bir yerdir. BEGIN bir AWK anahtar kelimesidir ve bu nedenle büyük harfle yazılmalıdır. Lütfen bu bloğun isteğe bağlı olduğunu unutmayın.
Vücut Bloğu
Gövde bloğunun sözdizimi aşağıdaki gibidir -
Syntax
/pattern/ {awk-commands}
Gövde bloğu, her giriş satırına AWK komutları uygular. Varsayılan olarak, AWK her satırda komutları yürütür. Bunu kalıplar sağlayarak sınırlayabiliriz. Gövde bloğu için anahtar sözcük olmadığını unutmayın.
END Bloğu
END bloğunun sözdizimi aşağıdaki gibidir -
Syntax
END {awk-commands}
END bloğu programın sonunda yürütülür. END bir AWK anahtar sözcüğüdür ve bu nedenle büyük harfle yazılmalıdır. Lütfen bu bloğun isteğe bağlı olduğunu unutmayın.
Bir dosya oluşturalım marks.txt seri numarasını, öğrencinin adını, konu adını ve elde edilen notların sayısını içerir.
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Şimdi AWK betiğini kullanarak dosya içeriklerini başlık ile görüntüleyelim.
Example
[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt
Bu kod çalıştırıldığında, aşağıdaki sonucu verir -
Output
Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Başlangıçta AWK, BEGIN bloğundan başlığı yazdırır. Daha sonra gövde bloğunda, bir dosyadan bir satır okur ve yalnızca içeriği standart çıktı akışına yazdıran AWK'nın yazdırma komutunu yürütür. Bu işlem, dosya sonuna ulaşıncaya kadar tekrar eder.