Merhaba,
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ı :
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.
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. Kelimenin önüne Hit the 1. Kelimenin arkasına ise with your eklemek..Kodumuzu veriyorum. İnceleyelim:
awk '{print "Hit the",$1,"with your",$2}' words.dataBu kodu uyguladıktan sonra tekrar bakalım. Words.dataya :
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.
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.
awk '{print "Avg for",$1,"is",($2+$3+$4)/3}' grades.dataçıktı metin:
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:
awk /^clown/'{print "See the",$1,"at the",$3}' words.dataSee 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