Gönderen Konu: AWK Komutu Kullanımı  (Okunma sayısı 4584 defa)

HS-Abdullah

  • Administrator
  • Newbie
  • *****
  • İleti: 45
    • Profili Görüntüle
    • E-Posta
AWK Komutu Kullanımı
« : Eylül 13, 2009, 05:12:31 ÖS »
Merhaba Hostingsiteniz Ailesi,

Awk kodu aslında programlamada veri dosyalarındaki dil dönüşümleri için kullanılmaktadır. Biz bu metnimizde awk nın " print " ayarlarıyla ilgili yoğunlaşacağız. Aslında kafa karıştırıcı şeyleri awk ile kolayca yapabiliriz .Awk kodunun genel kullanımı :

Kod: [Seç]
awk <pattern> '{print <stuff>}' <file>
Bu durumda, stuff metnin kombinasyonu olacaktır. Bu durumda özel değişkenler çıktıda gözükecektir.. Belki bu bir yada iki matematik operatörünün yapabilecekleriyle eşit bir işlem. Açıkcası bu kısım tamamen mantıksız gibi gelebilir. Aslında banada mantıksız gelen bir kısım. Keşke eklemeseydim diye düşünmemiş değilim. Neyse biz örneklere bakalım. Örneklerde emin olun daha iyi anlayacağız. Girişler her zaman saçma olur.

Haydi bir dosya oluşturalım. Adı words.data olsun. Ve içeriği aşağıdaki satırlardan ibaret olsun.

Kod: [Seç]
nail hammer wood
pedal foot car
clown pie circus

Dosya içeriğimiz çok düzgün olmadı. Biraz düzenlemeye ihtiyacımız var. Şimdi tam olarak yapmak istediğimiz şey 1. Kelime’nin önüne “Hit the” 1. Kelimenin arkasına ise  “with your” eklemek..Kodumuzu veriyorum. İnceleyelim:

Kod: [Seç]
awk '{print "Hit the",$1,"with your",$2}' words.data
Bu kodu uyguladıktan sonra tekrar bakalım. Words.data’ya :

Kod: [Seç]
Hit the nail with your hammer
Hit the pedal with your foot
Hit the clown with your pie

Şimdi ise bu awk kodunu sayısal olarak kullanımı görelim.  grades.data adlı bir dosya oluşturalım. İçine ise aşağıdaki metni yazalım.

Kod: [Seç]
Rogers 87 100 95
Lambchop 66 89 76
Barney 12 36 27

Şimdi awk ile yapabileceklerimizi sayısal olarakda görelim aynı zamanda pekiştirmek için ilk derste anlattığımız kelime aralarına kelime eklemeği görelim.

Kod: [Seç]
awk '{print "Avg for",$1,"is",($2+$3+$4)/3}' grades.data
çıktı metin:

Kod: [Seç]
Avg for Rogers is 94
Avg for Lambchop is 77
Avg for Barney is 25

Biraz daha açıklamak gerekirse “ Avg for “ kelimesini cümlenin başına getirdik. 2. 3. 4. Satırlarını da toplayıp 3 ‘e böldük. Tıpkı bir hesap makinası gibi.  Aslında hesaplama scriptlerinde de temel mantık budur.

Şimdiye kadar biz aslında yeterince model görmedik. Fakat Biz satırları bu işlem prosedüründen ayrı tutmak istiyorsak aşağıdaki kodlamayı inceleyelim:

Kod: [Seç]
awk /^clown/'{print "See the",$1,"at the",$3}' words.data
See the clown at the circus

Biz burada awk kodunu girdi satırlarıyla inceledik. Ayrıca son bir not print ve pattern arasında boşluk yok. Eğer oraya boşluk koyarsak awk printin çalışmadığını düşünür.Burda size anlatılanın hepsi awk nın temel seviyesidir. Bunun yanına bir çok parametler ekliyerek bu çok daha fazla genişletilebilir. Ancak şimdilik biz temelimizi atalım. İleride inşallah benim veya başka bir bu işle ilgilenen arkadaşın makalesinde daha profesyonel kullanımlarını görürüz.

Saygılarımla…
Abdullah ÇINAR