Awk Yerleşik Değişkenlerinin Nasıl Kullanılacağını Öğrenin - Bölüm 10
Serinin bu bölümünde Awk özellikleri bölümünü açığa çıkarırken, Awk'taki yerleşik değişkenler kavramının üzerinden geçeceğiz. Awk'ta kullanabileceğiniz iki tür değişken vardır, bunlar; 8. Bölümde ele aldığımız kullanıcı tanımlı değişkenler ve yerleşik değişkenler.
Yerleşik değişkenler zaten Awk'da tanımlanmış değerlere sahiptir, ancak bu değerleri de dikkatli bir şekilde değiştirebiliriz; yerleşik değişkenler şunları içerir:
FILENAME
: geçerli giriş dosyası adı (değişken adını değiştirmeyin)FR
: geçerli giriş satırının numarası (yani giriş satırı 1, 2, 3… vb., değişken adını değiştirmeyin)NF
: geçerli giriş satırındaki alanların sayısı (değişken adını değiştirmeyin)OFS
: çıktı alanı ayırıcısıFS
: giriş alanı ayırıcısıORS
: çıktı kayıt ayırıcısıRS
: giriş kayıt ayırıcısı
Yukarıdaki Awk yerleşik değişkenlerinden bazılarının kullanımını göstermeye devam edelim:
Geçerli giriş dosyasının dosya adını okumak için FILENAME
yerleşik değişkenini aşağıdaki gibi kullanabilirsiniz:
awk ' { print FILENAME } ' ~/domains.txt
Her giriş satırı için dosya adının yazdırıldığını fark edeceksiniz; bu, FILENAME
yerleşik değişkenini kullandığınızda Awk'ın varsayılan davranışıdır.
Bir girdi dosyasındaki satırların (kayıtların) sayısını saymak için NR
kullanıldığında, aşağıdaki örnekte göreceğimiz gibi boş satırların da sayıldığını unutmayın.
domains.txt dosyasını cat komutunu kullanarak görüntülediğimizde, dosyada metin içeren 14 satır ve boş 2 satır bulunur:
cat ~/domains.txt
awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Bir kayıt veya satırdaki alanların sayısını saymak için NR yerleşik değişkenini şu şekilde kullanırız:
cat ~/names.txt
awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Daha sonra, FS
yerleşik değişkenini kullanarak bir giriş alanı ayırıcısı da belirtebilirsiniz; bu, Awk'un giriş satırlarını alanlara nasıl böldüğünü tanımlar.
FS
için varsayılan değer boşluk ve sekme'dir, ancak FS
'nin değerini, belirtilen herhangi bir karakterle değiştirebiliriz. Awk'a giriş satırlarını buna göre bölmesi talimatını verecektir.
Bunu yapmanın iki yöntemi vardır:
- yöntemlerden biri FS yerleşik değişkenini kullanmaktır
- ikincisi ise -F Awk seçeneğini çağırmaktır
Bir Linux sistemindeki /etc/passwd dosyasını düşünün; bu dosyadaki alanlar :
karakteri kullanılarak bölünmüştür, böylece onu yeni giriş alanı ayırıcısı olarak belirtebiliriz. aşağıdaki örneklerde olduğu gibi belirli alanları filtrelemek istiyoruz:
-F
seçeneğini şu şekilde kullanabiliriz:
awk -F':' '{ print $1, $4 ;}' /etc/passwd
İsteğe bağlı olarak FS
yerleşik değişkeninin avantajlarından da aşağıdaki şekilde yararlanabiliriz:
awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Bir çıktı alanı ayırıcısı belirtmek için OFS
yerleşik değişkenini kullanın; aşağıdaki örnekte olduğu gibi kullandığımız karakter kullanılarak çıktı alanlarının nasıl ayrılacağını tanımlar:
awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
Bu Bölüm 10'da, önceden tanımlanmış değerlerle gelen Awk yerleşik değişkenlerini kullanma fikrini araştırdık. Ancak bu değerleri de değiştirebiliriz, ancak ne yaptığınızı yeterince anlayarak bilmiyorsanız bunu yapmanız önerilmez.
Bundan sonra, kabuk değişkenlerini Awk komut işlemlerinde nasıl kullanabileceğimizi ele alarak ilerleyeceğiz, bu nedenle Tecmint'e bağlı kalalım.