AWK

**AWK** adalah bahasa pengaturcaraan umum yang direka bagi memproses data berasaskan teks, samaada dalam file atau aliran data. Nama AWK merupakan sringkasan nama penciptanya — Alfred '''A'''ho, Peter '''W'''einberger, dan Brian '''K'''ernighan; bagaimanapun, bukanlah kebiasaan menyebut setiap huruf secara berasingan tetapi untuk mmenyebut ejaannya sama seperti bunyi burung, auk (yang menjadi lambang bahasa tersebut seperti sampul buku *The AWK Programming Language* ). awk, apabila ditulis dalam huruf kecil, merujuk kepada Unix atau perisian Plan 9 yang melaksanakan aturcara yang ditulis dalam bahasa pengaturcaraan AWK.
AWK adalah contoh bahasa pengaturcaraan yang menggunakan jenis data 'String*, array berkait (iaitu array diindex oleh string utama (*key strings*)) dan gambaran biasa (*regular expression*) secara meluas. Kuasa, bentuk, dan kelemahan aturcara AWK dan skrip [[sed]] mendorong [[Larry Wall]] untuk mencipta [[Perl]]. Disebabkan banyak notasi, kesemua bahasa sebegini sering kali digunakan bagi menulis aturcara satu baris *one-liner program*.
AWK is one of the early tools to appear in [[Version 7 Unix]] and gained popularity as a way to add computational features to a Unix [[Pipeline (Unix)|pipeline]].
Satu versi bahasa AWK adalah ciri piawaian bagi kesemua sistem pengoperasian moden seperti unix yang terdapat hari ini. AWK disebut dalam Spesifikasi UNIX Tunggal - (*Single UNIX Specification*) sebagai salah satu utiliti wajib bagi sistem p[engoperasian [[Unix]]. Selain kerangka Bourne, AWK adalah bahasa skrip lain yang terdapat di [http://www.unix.org/version3/apis/cu.html persekitaran Unix piwaian]. Perlaksanaan AWK wujud sebagai aturcara boleh pasang bagi hampir keseluruhan sistem pengoperasi lain.
=== Padanan julat baris input ===

 $ yes Wikipedia | cat -n | awk 'NR % 4 == 1, NR % 4 == 3' | head -7
      1  Wikipedia
      2  Wikipedia
      3  Wikipedia
      5  Wikipedia
      6  Wikipedia
      7  Wikipedia
      9  Wikipedia
 $

Perintah *yes* dan *cat* menghasilkan siri baris bernombor sebagai contoh input.
*NR* adalah nombor rekod, biasanya baris input, AWK telah baca sehingga kini, Contoh. nombor baris sekarang, bermula dari 1 bagi baris pertama input.
*%* adalah operator modulo.
*NR % 4 == 1* adalah betul bagi baris input pertama, kelima, kesembilan, dll.,.
Sama juga, *NR % 4 == 3* adalah betul bagi baris input ketiga, ketujuh, kesebelas, dll..
Pola julat adalah palsu sehingga padanan pertama, pada baris 1, dan kemudian kekal benar sehingga dan termasuk padanan bahagian kedua, pada baris 3.
Ia kemudian kekal palsu sehingga bahagian pertama padan sekali lagi pada baris 5.

Bahagian pertama pola julat (*range pattern*) kekal benar, contoh. *1*, boleh digunakan bagi memulakan julat pada permulaan input.
Sama juga, jika bahagian kedua kekal palsu, contoh. *0*, julat kekal sehingga akhir input.

 /^--cut here--$/, 0

Cetak baris input dari baris pertama padan gambaran biasa *^--cut here--$* sehingga akhir.

=== Pengiraan frekuensi perkataan ===
Kekerapan kata, (menggunakan jujukan berkait)

 BEGIN { FS="[^a-zA-Z]+"}
 
 { for (i=1; i<=NF; i++)
      words[tolower($i)]++
 }
 
 END { for (i in words)
     print i, words[i]
 }

== Skrip AWK lengkap ==
Sebagaimana kebanyakan bahasa pengaturcaraan lain, skrip AWK lengkap (*self-contained *) boleh dihasilkan dengan menggunakan sinteks yang dikenali sebagai "[[shebang (Unix)|shebang]]".

Sebagai contoh, perintah UNIX dikenali sebagai <tt>hello.awk</tt> yang memaparkan "Hello, world!" boleh dihasilkan dengan mencipta fail bernama <tt>hello.awk</tt> mengandungi baris berikut:

 #!/usr/bin/awk -f
 BEGIN { print "Hello, world!"; exit }


== Pautan luar ==
* [http://cm.bell-labs.com/cm/cs/awkbook/index.html awk]  maintained by [[Brian Kernighan]].
* [news:comp.lang.awk comp.lang.awk] is a [[USENET]] [[newsgroup]] dedicated to AWK.
* [http://www.gnu.org/software/gawk/gawk.html GAWK (GNU awk) webpage]
* [http://freshmeat.net/projects/mawk/ *mawk download site*]
* [http://clio.rice.edu/djgpp/win2k/gwk311b.zip DJGPP port of Gawk 3.11b as a downloadable 768KB zipfile] 
* [http://sourceforge.net/projects/xmlgawk/ *xgawk download site''] 
* Awka Open Source, AWK to C Conversion Tool
* TAWK Compiler
* Jawk Open Source, an implementation of AWK in Java with extensions
* gnulamp awk tutorial 
* AWK annoyances; This page includes a Linux port of the MKS version of AWK.