Carane Tulis AWK Perintah lan Script

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-file

Iki 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.txt

Pernyataan 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.50

Banjur 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.txt

Iki 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 373

Dhaptar 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.txt

Ing 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.txt

Senar 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 .