awk
-
hayatimi degistiren super programlama dili, bu dilin sayesinde tovbe ettim ben, arindim, pir-u pak oldum.
-
ismini 3 geli$tiricisinin soyadlarinin ba$ harfinden alan (aho, weinberger, kernighan) programlama dili.. bizzat awk'yi geli$tirenler awk'yi $oyle tanimlami$lardir:
"awk is a convenient and expressive programming language that can be applied to a wide variety of computing and data-manipulation tasks." -
bunca senelik unixciyim shell script olayinda kullanmakan tirstigim yegane komut. (turkce manual lazim :) )
-
unix'in özelliklerini de ta$ıyan oldukça güçlü bir yığın dildir. awk, unix kabuğunun dosya i$leme arabirimlerine, c benzeri yapısal programlama gibi birçok ilave getirir.
-
en yaygin olarak, bir metin icerisindeki belirli kolonlari ayiklamak amacli kullanilan komut.
ornegin bir directory icerisindeki conf uzantili dosyalari, en son degi$tirildikleri tarihle /yedek altina save etmek istiyoruz diyelim*. kar$imizda ls -al ile alinan $oyle bir tablo vardir:
-rw-r--r-- 1 root other 907 mar 22 15:40 hodo.conf
-rw-r--r-- 1 root other 191831 mar 22 22:26 hede.conf
-rw-r--r-- 1 root other 214 may 22 2001 snmpd.conf
bu durumda, yazmamiz ve/veya ilgili script icerisinde bulunmasi gereken code da $oyle olacaktir:
cp `ls -al | grep conf | awk '{printf("%s.%s.%s.%s\n", $9, $6, $7, $8)}'` /yedek
bakin ne guzel awk. -
metin demiralp tarafindan yakin zamana kadar matematik muhendisligi ilk sinif ogrencilerine ogretilmi$, cogunlugun hicbir i$ine yaramami$tir.
(bkz: gawk) -
awk'ı küçümsemeyiniz. misal en basitinden, bir dizinin tüm alt dizinlerinde yer alan dosyaların toplam boyutunu a$ağıdaki tek satır ile öğrenebiliriz:
find . -type f -exec ls -l {} \; | awk 'begin{z=0}{z+=$5}end{s=sprintf("%.2f", z/(1024*1024));print"toplam="s}'
tabi burada begin ve end kelimeleri büyük harftir. -
awk manual'dan direk aktarıyorum, yardı sabah sabah:
"recipe for a programming language
1 part egrep 1 part snobol
2 parts ed 3 parts c
blend all parts well using lex and yacc. document minimally and release.
after eight years, add another part egrep and two more parts c. document very well and release." -
quotaniz doldugunda yardimini esirgemeyen komut. mesela
du -s *| awk '{fs = " "; printf("%05s %s\n",$1, $2)}' | sort -r
yazacak olursaniz bulundugunuz dizinde ne kadar dosya, klasor varsa, alt klasorleri ile birlikte toplam boyutunu listeler.
fs: field seperator.. -
cutın boynu bükük kalır bunun yanında.
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap