Perintah, sintaks, lan conto
Pangripta awk minangka cara kuat kanggo ngolah utawa nganalisis file teks-khusus file data sing diatur dening baris (baris) lan kolom.
Prasaja awk sederhana bisa mbukak saka baris perintah . Tugas sing luwih kompleks kudu ditulis minangka program awk (disebut skrip awk) menyang file.
Format dasar perintah awk katon kaya iki:
awk 'pattern {action}' input-file> output-fileIki tegese: njupuk saben baris file input; yen baris ngemot pola kasebut tumindak ing baris kasebut lan tulis baris kasebut ing file output. Yen pola dilirwakake, tumindak kasebut diterapake ing kabeh baris. Tuladhane:
awk '{print $ 5}' table1.txt> output1.txtPernyataan iki njupuk unsur kolom 5 saben baris lan nyerat minangka baris ing file output "output.txt". Variabel '$ 4' nuduhake kolom kapindho. Sampeyan uga bisa ngakses kolom kapisan, kaping pindho, lan katelu, kanthi $ 1, $ 2, $ 3, lan liya-liyane. Miturut kolom asli, sampeyan bakal dipisahake kanthi spasi utawa tab (diarani papan putih). Dadi, yen file input "table1.txt" ngemot garis kasebut:
1, Justin Timberlake, Judul 545, Harga $ 7,30 2, Taylor Swift, Judul 723, Harga $ 7,90 3, Mick Jagger, Judul 610, Harga $ 7,90 4, Lady Gaga, Judul 118, Harga $ 7,30 5, Johnny Cash, Judul 482, Harga $ 6,50 6, Elvis Presley, Judul 335, Harga $ 7.30 7, John Lennon, Judul 271, Harga $ 7,90 8, Michael Jackson, Judul 373, Harga $ 5.50Banjur printah bakal nulis baris ing ngisor iki menyang file output "output1.txt":
545, 723, 610, 118, 482, 335, 271, 373,Yen pemisah kolom iku soko liyane saka spasi utawa tab, kayata koma, sampeyan bisa nemtokake sing ing statement awk kayata:
awk -F, '{print $ 3}' table1.txt> output1.txtIki bakal milih unsur saka kolom 3 saben baris manawa kolom dianggep dipisahake karo koma. Mulane output, ing kasus iki, bakal:
Title 545 Title 723 Title 610 Title 118 Title 482 Title 335 Title 271 Title 373Dhaptar pernyataan ing jero kurung kriting ('{', '}') diarani blok. Yen sampeyan nyetel ekspresi sing ana sarirane ing ngarep blok, pernyataan sing ana ing blok kasebut bakal dileksanakake yen kondisi kasebut bener.
awk '$ 7 == "\ $ 7.30" {print $ 3}' table1.txtIng kasus iki, kondisi kasebut yaiku $ 7 == "\ $ 7.30", sing artine unsur ing kolom 7 padha karo $ 7.30. Backslash ing ngarep tandha dollar digunakake kanggo nyegah sistem kasebut ngenalake $ 7 dadi variabel lan tinimbang njupuk tandha dollar kanthi harfiah.
Dadi statement awk prints metu unsur ing kolom 3rd saben baris sing duwe "$ 7.30" ing kolom 7.
Sampeyan uga bisa nggunakake ekspresi reguler minangka kondisi kasebut. Tuladhane:
awk '/ 30 / {print $ 3}' table1.txtSenar antarane garis miring loro ('/') minangka ekspresi reguler. Ing kasus iki, iki mung senar "30." Iki tegese yen baris ngandhut string "30", sistem iki ngowahi unsur ing baris 3 baris kasebut. Ing output ing conto ing ndhuwur bakal:
Timberlake, Gaga, Presley,Yen unsur-unsur tabel sing awk bisa kalkulasi ing wong kaya ing conto iki:
awk '{print ($ 2 * $ 3) + $ 7}'Kejabi variabel sing ngakses unsur baris saiki ($ 1, $ 2, dsb.) Ana variabel $ 0 sing nuduhake baris lengkap (line), lan variabel NF kang nyekel nomer lapangan.
Sampeyan uga bisa nemtokake variabel anyar kaya ing conto iki:
awk '{sum = 0; kanggo (col = 1; col <= NF; col ++) jumlah + = $ col; jumlah cetak; } 'Iki ngitung lan nyithak jumlah kabeh elemen saben baris.
Awk statements sering digabung karo perintah sed .