Awk Programlama Dilini Kullanarak Komut Dosyaları Nasıl Yazılır - Bölüm 13


Awk serisinin başlangıcından Bölüm 12'ye kadar sırasıyla komut satırında ve kabuk komut dosyalarında küçük Awk komutları ve programları yazıyoruz.

Ancak Awk da tıpkı Shell gibi yorumlanan bir dildir, dolayısıyla bu serinin başlangıcından bu yana incelediğimiz her şeyle birlikte artık Awk çalıştırılabilir komut dosyaları yazabilirsiniz.

Bir kabuk betiğini nasıl yazdığımıza benzer şekilde, Awk betikleri de şu satırla başlar:

#! /path/to/awk/utility -f 

Örneğin, sistemimde Awk yardımcı programı /usr/bin/awk konumunda bulunuyor, bu nedenle bir Awk komut dosyasını şu şekilde başlatırdım:

#! /usr/bin/awk -f 

Yukarıdaki satırı açıklayarak:

  1. #! – bir komut dosyasındaki talimatlar için bir tercümanı belirten Shebang olarak anılır
  2. /usr/bin/awk – yorumlayıcıdır
  3. -f – yorumlayıcı seçeneği, bir program dosyasını okumak için kullanılır

Bununla birlikte, şimdi Awk çalıştırılabilir komut dosyalarının bazı örneklerine bakmaya başlayalım, aşağıdaki basit komut dosyasıyla başlayabiliriz. Yeni bir dosyayı açmak için favori düzenleyicinizi aşağıdaki gibi kullanın:

vi script.awk

Ve aşağıdaki kodu dosyaya yapıştırın:

#!/usr/bin/awk -f 
BEGIN { printf "%s\n","Writing my first Awk executable script!" }

Dosyayı kaydedin ve çıkın, ardından aşağıdaki komutu vererek betiği çalıştırılabilir hale getirin:

chmod +x script.awk

Daha sonra şunu çalıştırın:

./script.awk
Örnek Çıktı
Writing my first Awk executable script!

Eleştirel bir programcı şu soruyu soruyor olmalı: "Yorumlar nerede?". Evet, Awk betiğinize yorumlar da ekleyebilirsiniz. Kodunuza yorum yazmak her zaman iyi bir programlama uygulamasıdır.

Kodunuzu inceleyen diğer programcıların, bir komut dosyasının veya program dosyasının her bölümünde neyi başarmaya çalıştığınızı anlamalarına yardımcı olur.

Bu nedenle yukarıdaki scripte aşağıdaki gibi yorumlar dahil edebilirsiniz.

#!/usr/bin/awk -f 

#This is how to write a comment in Awk
#using the BEGIN special pattern to print a sentence 

BEGIN { printf "%s\n","Writing my first Awk executable script!" }

Daha sonra, bir dosyadan girdi okuduğumuz bir örneğe bakacağız. /etc/passwd hesap dosyasında aaronkilik adlı bir sistem kullanıcısını aramak, ardından kullanıcı adını, kullanıcı ID'sini ve kullanıcıyı yazdırmak istiyoruz GID şu şekildedir:

Aşağıda second.awk adlı betiğimizin içeriği bulunmaktadır.

#! /usr/bin/awk -f 

#use BEGIN sepecial character to set FS built-in variable
BEGIN { FS=":" }

#search for username: aaronkilik and print account details 
/aaronkilik/ { print "Username :",$1,"User ID :",$3,"User GID :",$4 }

Dosyayı kaydedin ve çıkın, betiği çalıştırılabilir hale getirin ve aşağıdaki gibi çalıştırın:

chmod +x second.awk
./second.awk /etc/passwd
Örnek Çıktı
Username : aaronkilik User ID : 1000 User GID : 1000

Aşağıdaki son örnekte, 0-10 arasındaki sayıları yazdırmak için do while ifadesini kullanacağız:

Aşağıda do.awk adlı betiğimizin içeriği bulunmaktadır.

#! /usr/bin/awk -f 

#printing from 0-10 using a do while statement 
#do while statement 
BEGIN {
#initialize a counter
x=0

do {
    print x;
    x+=1;
}
while(x<=10)
}

Dosyayı kaydettikten sonra, daha önce yaptığımız gibi betiği çalıştırılabilir hale getirin. Daha sonra şunu çalıştırın:

chmod +x do.awk
./do.awk
Örnek Çıktı
0
1
2
3
4
5
6
7
8
9
10

Özet

Bu ilginç Awk serisinin sonuna geldik, umarım Awk programlama diline giriş niteliğindeki 13 bölümden çok şey öğrenmişsinizdir.

Başından beri belirttiğim gibi, Awk tam bir metin işleme dilidir, bu nedenle Awk programlama dilinin çevresel değişkenler, diziler, işlevler (yerleşik ve kullanıcı tanımlı) ve ötesi gibi diğer yönlerini öğrenebilirsiniz.

Awk programlamanın henüz öğrenilecek ve uzmanlaşılacak ek bölümleri var, bu nedenle aşağıda Awk programlama becerilerinizi geliştirmek için kullanabileceğiniz önemli çevrimiçi kaynaklara bazı bağlantılar sağladım, bunlar mutlaka ihtiyacınız olan tek şey değil, ayrıca bakabilirsiniz Yararlı Awk programlama kitapları için.

Referans Bağlantıları: GNU Awk Kullanıcı Kılavuzu ve AWK Dil Programlama

Paylaşmak istediğiniz düşünceleriniz veya sorularınız için aşağıdaki yorum formunu kullanın. Daha heyecan verici seriler için her zaman Tecmint'e bağlı kalmayı unutmayın.