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:

  1. FILENAME : geçerli giriş dosyası adı (değişken adını değiştirmeyin)
  2. 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)
  3. NF : geçerli giriş satırındaki alanların sayısı (değişken adını değiştirmeyin)
  4. OFS : çıktı alanı ayırıcısı
  5. FS : giriş alanı ayırıcısı
  6. ORS : çıktı kayıt ayırıcısı
  7. 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:

  1. yöntemlerden biri FS yerleşik değişkenini kullanmaktır
  2. 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.