• 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."
  • 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.
  • bunca senelik unixciyim shell script olayinda kullanmakan tirstigim yegane komut. (turkce manual lazim :) )
  • 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.
  • 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."
  • awk, alfred aho, peter weinberger ve brain kernighan tarafından 1978 yılında geliştirilmiş ve bir çok *nix sürümünde (özellikle system v, version 3.1'den sonrakilerde) kendisine yer bulmuş data driven bir programlama dilidir (dilin açık kaynak kodlu gnu versiyonu 1986 yılında richard stallman'ın tavsiyesi ile paul rubin ve jay fenlason tarafından yazılmıştır)..

    awk sunlari yapabilirsiniz:

    - küçük kişisel veritabanlarınızı yönetebilir, formatlı raporlar oluşturabilirsiniz..
    - veriler üzerinde aritmetik ve string operasyonlarını gerçekleştirebilirsiniz..
    - genel programlama yapılarını kullanabilir (kıyas operatörleri, döngüler v.s.)..
    - kabukta bir komutun çıktısını on-the-fly işleyebilir ve başka bir komutun girdisi olacak şekilde formatlayabilirsiniz..
    - doğru yerde kullandığınızda c, pascal gibi dillerle -nispeten- zor olan operasyonları tek satırda gerçekleştirebilirsiniz..
    - network soketlerine erisim bile saglayabilirsiniz (fakat erisim saglayabiliyorsunuz diye erismeniz gerekmez).

    bunun yaninda awk yorumlanan bir dildir, yani awk kodları tek başına çalıştırılabilir bir uygulamaya dönüştürülemez (c ve pascal'a donusturmek icin bazi yardimci araclar olmasina ragmen hic bir geregi yoktur), awk scriptlerinin bir sistemde çalışabilmesi için o sistemde awk yorumlayıcısının bulunması gerekir.

    pek basit bir ornek de benden (root haklari ile calismayan tum surecleri oldurur, ki iyi bir sey degildir):

    ]# ps aux | awk '$1 !~ /root/ {if(nr > 1) print $2}' | xargs kill -9

    (bkz: pipe)
  • amk'ın bir tık sansürlü versiyonu. 2010'lar sürecinde yaygınlaşmış sanırım.
  • hayatimi degistiren super programlama dili, bu dilin sayesinde tovbe ettim ben, arindim, pir-u pak oldum.
  • "awk dilini uygulayanlar bu programlama diline isim verirken tutarlı bir hayalgücü kısırlığı sergilemişlerdir."

    mawk man sayfasindan
  • 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..
hesabın var mı? giriş yap