AWK la ngon ngu lap trinh đuoc nham muc đich xu ly cac Tap tin chu (text file) theo nguyen ly khop mau (pattern matching); đong thoi con la ten goi mot chuong trinh trong he đieu hanh UNIX. Trong UNIX cac chuong trinh đuoc viet ten chu thuong nen AWK con đuoc goi la Awk hoac awk.


Lich su Vao đau nhung nam 1970, cong cu manh trong UNIX co nhiem vu xu ly cac file van ban la grep, dua tren nguyen tac khop mau. Cac tac gia muon bo sung tinh nang thao tac voi so đe đua Awk thanh mot cong cu huu hieu co the gan voi mot ngon ngu lap trinh thuc thu. Đac biet la kha nang  phan tach cu phap; ve phuong dien nay thi Awk gan nhu đam đuong đuoc vai tro cua lex va yacc.
Ten goi AWK bat nguon tu cach goi đua cua cac đong nghiep tai Bell Labs, ghep cac chu cai đau cua ten ba tac gia: Aho, Weinberger, va Kernighan.


Cu phap Dang cu phap co ban cua Awk la:

Theo đo may tinh se do tung dong trong file chu va so sanh voi mau 1. Neu khop, cau lenh 1 đuoc thuc hien. Tiep theo may tinh so sanh dong chu voi mau 2. Neu khop, cau lenh 2 đuoc thuc hien; va cu nhu vay.


= Vi du =
Đe minh hoa ta lay vi du mot file ho so suc khoe co noi dung nhu sau (moi nguoi co thong tin gioi tinh va chieu cao)

An       nam     165
Mai       nu        158
Minh     nam     170
Minh     nu        162
Thanh   nam     169

Voi mot file nhu vay cac cot đuoc Awk xem nhu cac truong va đuoc đat ten $1 cho cot thu nhat, $2 cho cot thu hai, $3 cho cot thu ba,...


= Mau =
Mot mau chinh la bieu thuc so sanh (bieu thuc logic) giua ten cot va gia tri. Chang han: 

ten nguoi la Minh tuong ung voi mau sau:

gioi tinh la nam tuong ung voi mau sau:

Khi gap mot mau, may tinh hieu rang chi thuc hien cau lenh voi nhung dong tuong ung voi mau đo. Trong truong hop thuc hien lenh voi moi dong trong file chu thi mau đuoc bo qua, chi can viet:

Đoi voi mau, con co the dung cac toan tu logic nhu || (hoac), && (va). Đe trinh bay đuoc đon gian, o đay ta khong đe cap đen.


= Cau lenh =
Cau lenh thuong dung trong Awk la lenh in ra man hinh (print). Chang han:

In ra ten nguoi:

In ra chieu cao quy đoi ra met:

Trong truong hop in đay đu ca dong thi ta bo qua phan {cau lenh}.
Cau lenh cua Awk con bao gom ca nhung cau truc đieu khien (lap, re nhanh) thuong gap trong cac ngon ngu lap trinh. O đay, đe đon gian ta khong đe cap đen.
Ngoai ra, neu co nhieu cau lenh trong mot cap { } thi chung can đuoc phan tach boi dau cham phay.


= Lenh đay đu: mau đi kem cau lenh =
In ra ten va chieu cao nhung nguoi la nam gioi

In ra chieu cao quy ra met cua moi nguoi trong danh sach (khong can viet ra mau)

In ra thong tin đay đu cua tat ca nhung nguoi co ten Minh (khong can viet cau lenh print)


= Truong hop đac biet =
Thong thuong voi moi dong mau {cau lenh} may se kiem tra đoi chieu voi tat ca cac dong trong file chu, lan luot tu tren xuong duoi. Neu dong nao khop voi mau thi thuc hien cau lenh. Awk cho phep mot ngoai le la đuoc thuc hien mot so cau lenh truoc va sau khi khi ra soat file chu. Cac cau lenh ngoai le nay đuoc đat kem voi BEGIN { } va END { }.
Chang han can mot dong tieu đe o tren cung, tiep theo la in ra cac con so chieu cao cua nhung nguoi nu gioi (giau ten); cuoi cung la tong ket co bao nhieu nguoi la nu va chieu cao trung binh la bao nhieu:


= Bien =
Cac bien trong Awk co kieu đong, khong can khai bao va tu đong lay cac gia tri mac đinh (bang 0 voi kieu so, bang xau rong đoi voi chuoi ky tu).
Trong vi du tren hai bien la sonu va caotb đuoc dung đen ma khong can đuoc khoi tao trong phan BEGIN.


Chay chuong trinh Tu dau nhac lenh co the goi truc tiep Awk voi đoan ma cung ten file chu, theo mau:

Chang han:

Hoac neu đa  luu file ma lenh, chang han trung_binh.awk thi co the goi

Đoi voi UNIX va Linux, co the xau chuoi Awk voi cac lenh khac theo kieu ong dan lenh.


Cac phien ban Hai phien ban chinh cua Awk la:

gawk: theo giay phep GPL.
nawk: mot he Awk moi (new Awk) voi nhieu tinh nang đuoc bo sung.


Xem them xu ly van ban chu (text processing)
phan tach
co so du lieu


Tai lieu Aho, Alfred V., Brian W. Kernighan, va Peter J. Weinberger. The AWK Programming Language. Addison-Wesley, 1988, ISBN 0-201-07981-X [1] Luu tru ngay 20 thang 4 nam 2006 tai Wayback Machine.


Tham khao