Çawa Rêgezên Şand û Nivîsarên AWKê binivîse

Fermandar, syntax û nimûne

Fermandariya awk e ku ji bo pelên daneyên teknolojî an jî analîzkirina analîzê - bi taybetî, pelên daneyên daneyên ku ji hêla lines û rêzan têne rêxistin têne kirin.

Hêzên awkîn ên hêsan dikarin ji rêza fermanê veguherînin . Karûbarên bêtir tevlîhev divê divê bernameyên awkek ên ku (pelên awkarkirî) têne nivîsandin.

Forma bingehîn ya rêkûpa bingehîn de wiha ye:

'awk' pattern {action} 'input-file> output-file

Ev wateya: her line ji pelê pelê bistînin; Heke ku rêza nimûne pêk tîne çalakiyek bi xêzikê re bikin û rêza encamên bi hilberandina pelê-nivîsandinê binivîse. Heke pişk derxistin, tevgera çalakiyê her tiştî bi kar tîne. Bo nimûne:

awk '{$ $ 5}}' table1.txt> output1.txt

Ev gotar ji hêla pênc 5th-ê ya rêzê digire û wekî xuyakirina pelê "output.txt" di rêzê de nivîsîne. '$ 4' variant li ser bloka duyem e. Bi vî awayî hûn dikarin yekem, duyemîn û sêyem, bi $ 1, $ 2, $ 3, e. Ji ber vê yekê, heke "pel1.txt" peldanka pelê van rêzan hene:

1, Justin Timberlake, Sernav 545, Bi $ 7.30 2, Taylor Swift, Sernav 723, Bi $ 7.90 3, Mick Jagger, Sernivîsa 610, Lîma $ 7.90 4, Lady Gaga, Sernav 118, Biha $ 7.30 5, Johnny Cash, Title 482, $ $ 50 6, Elvis Presley, Sernav 335, Biha $ 7.30 7, John Lennon, Sernav 271, Biha $ 7.90 8, Michael Jackson, Sernav 373, Biha $ 5.50

Piştre emrê rêzê rêzên jêrîn ji pelê derveyî "output1.txt" binivîse:

545, 723, 610, 118, 482, 335, 271, 373,

Ger heger dabeşkerê dabeşker ji derveyî cûr û tabûyên din jî, wekî kumar, hûn dikarin diyar bikin ku di nav awkeya berbiçav de wiha diyar dike:

awk -F, '{$ $ $ 3}' table1.txt> output1.txt

Ew ê ji hêla her kêleya 3-ê ya elementê hilbijêre, heke ewan têne hesibandin ku ji hêla koma vekirî ne. Ji ber vê hilberê, di vê rewşê de dê bibe:

Sernav 545 Sernav 723 Sernav 610 Sernav 118 Title 482 Sernav 335 Sernav 271 Title 373

Lîsteya danûstandinên hundir di çarçoveya kulikan de ('{', '}') tête blokê tê gotin. Heke hûn li pêşiya bloka şerta mercî, daxuyaniyê di hundirê blokê de tenê heke eger rewşa rast e.

awk '$ 7 == "\ $ 7.30" {$ $ 3}' table1.txt

Di vê rewşê de, şert $ 7 == "\ $ 7.30" e, ku wateya ku li hêla 7-ê $ 730 hejmara elementê ye. Piştgiriya li pêşiya signza dolar tê bikaranîn ku sîstem ji rêbazê ji 7 $ wek veguherînek veguherîne û ji bilî peyva wateya dollarê bigire.

Ji ber vê yekê ev daxuyaniya awiklê li ser sê rêza sêyemîn ya ku "$ 7.30" di 7-ê de ye.

Hûn dikarin herdu ramanên rastîn bikar bînin wekî şertê. Bo nimûne:

awk '/ 30 / {print $ 3}' table1.txt

Di navbera slashes ('/') di navbera duçoveya rêzane de ye. Di vê rewşê de, tenê tenê cûr e "30." Ev tê wateya ku rêzek rêzê "30" tê de, pergala sêweya sêyemîn a rêzê ji hêla hêja dike. Hilbijêre di mînakek jor de dê bibe:

Timberlake, Gaga, Presley,

Heke hebên hûrgel hene hejmareke wêjeyê dikarin li ser vê nimûne li ser wan hesibandin.

awk '{print ($ 2 * $ 3) + $ 7}'

Ji bilî cûda ku ji hêla hûrgelên heyî yên heyî ($ 1, $ 2, hûrgelan) heye hene hene ku $ $ guherîn e ku kîjan rêzê (line), û NF-yê ku bi hejmareke zeviyên din hene.

Hûn dikarin di vê nimûneyê de guherînên nû yên şirove bikin:

awk '{sum = 0; ji bo (col = 1; col <= NF; col ++) sum + = $ col; kurteya çapkirinê } '

Ev yek ji hêla hêmanên her rowê tête dike û nivîsandin.

Gotarên Awk bi caran bi rêberên sed bi hev re tête hev.