Kmandijiet, sintassi u eżempji
Il-kmand awk huwa metodu qawwi għall-ipproċessar jew l-analiżi ta 'fajls tat-test - b'mod partikolari, fajls tad-data li huma organizzati minn linji (ringieli) u kolonni.
Il-kmandi awk sempliċi jistgħu jitmexxew mil- linja tal - kmand . Kompiti aktar kumplessi għandhom jinkitbu bħala programmi awk (l-hekk imsejħa skripts awk) għal fajl.
Il-format bażiku ta 'kmand awk jidher bħal dan:
awk 'pattern {action}' input-file> output-fileDan ifisser: tieħu kull linja tal-fajl tad-dħul; jekk il-linja jkun fiha l-mudell tapplika l-azzjoni għall-linja u tikteb il-linja li tirriżulta fil-fajl tal-output. Jekk il-mudell jitħalla barra, l-azzjoni hija applikata għal-linja kollha. Pereżempju:
awk "{print $ 5}" tabella1.txt> output1.txtDin id-dikjarazzjoni tieħu l-element tal-ħames kolonna ta 'kull linja u tiktebha bħala linja fil-fajl tal-output "output.txt". Il-varjabbli "$ 4" tirreferi għat-tieni kolonna. Bl-istess mod tista 'taċċessa l-ewwel, it-tieni u t-tielet kolonna, b' $ 1, $ 2, $ 3, eċċ. Minn kolonni default suppost ikunu separati minn spazji jew tabs (hekk imsejħa spazju abjad). Għalhekk, jekk il-fajl tad-dħul "table1.txt" fih dawn il-linji:
1, Justin Timberlake, Titolu 545, Prezz $ 7.30 2, Taylor Swift, Titolu 723, Prezz $ 7.90 3, Mick Jagger, Titolu 610, Prezz $ 7.90 4, Lady Gaga, Titolu 118, Prezz $ 7.30 5, Johnny Cash, Titolu 482, Prezz $ 6.50 6, Elvis Presley, Titolu 335, Prezz $ 7.30 7, John Lennon, Titolu 271, Prezz $ 7.90 8, Michael Jackson, Titolu 373, Prezz $ 5.50Imbagħad il-kmand jikteb il-linji li ġejjin fil-fajl tal-output "output1.txt":
545, 723, 610, 118, 482, 335, 271, 373,Jekk is-separatur tal-kolonna hija xi ħaġa oħra għajr spazji jew tabs, bħalma hu virgola, tista 'tispeċifika li fid-dikjarazzjoni awk kif ġej:
awk-F, '{print $ 3}' tabella1.txt> output1.txtDan jagħżel l-element mill-kolonna 3 ta 'kull linja jekk il-kolonni jitqiesu li huma separati b'virgola. Għalhekk il-produzzjoni, f'dan il-każ, tkun:
Titolu 545 Titolu 723 Titolu 610 Titolu 118 Titolu 482 Titolu 335 Titolu 271 Titolu 373Il-lista ta 'dikjarazzjonijiet ġewwa l-parentesi tal-kaboċċi (' {','} ') tissejjaħ blokk. Jekk tpoġġi espressjoni kondizzjonata quddiem blokk, id-dikjarazzjoni ġewwa l-blokk tkun eżegwita biss jekk il-kondizzjoni hi vera.
awk '$ 7 == "\ $ 7.30" {print $ 3} "tabella1.txtF'dan il-każ, il-kundizzjoni hija ta '$ 7 == "\ $ 7.30", li jfisser li l-element fil-kolonna 7 huwa ugwali għal $ 7.30. Il-backslash quddiem is-sinjal tad-dollaru huwa użat biex jipprevjeni lis-sistema milli tinterpreta $ 7 bħala varjabbli u minflok tieħu s-sinjal ta 'dollari litteralment.
Allura din l-istqarrija awk timpressjona l-element fit-tielet kolonna ta 'kull linja li għandha "$ 7.30" fil-kolonna 7.
Tista 'wkoll tuża espressjonijiet regolari bħala l-kundizzjoni. Pereżempju:
awk '/ 30 / {print $ 3}' tabella1.txtIs-sekwenza bejn iż-żewġ linji ta 'barra (' / ') hija l-espressjoni regolari. F'dan il-każ, huwa biss is-sekwenza "30." Dan ifisser li jekk linja jkun fiha s-sekwenza "30", is-sistema tesprimi l-element fit-tielet kolonna ta 'dik il-linja. Ir-riżultat fl-eżempju ta 'hawn fuq ikun:
Timberlake, Gaga, Presley,Jekk l-elementi tal-mejda huma n-numri awk tista 'taħdem kalkoli fuqhom bħal f'dan l-eżempju:
awk "{print ($ 2 * $ 3) + $ 7}"Minbarra l-varjabbli li l-elementi ta 'aċċess tar-ringiela kurrenti ($ 1, $ 2, eċċ) hemm il-varjabbli $ 0 li tirreferi għar-ringiela sħiħa (linja), u l-varjabbli NF li żżomm in-numru ta'
Tista 'wkoll tiddefinixxi varjabbli ġodda bħal f'dan l-eżempju:
awk '{sum = 0; għal (col = 1; col <= NF; col ++) somma + = $ col; somma stampata; } "Dan jikkalkula u jimpjega s-somma tal-elementi kollha ta 'kull ringiela.
Id-dikjarazzjonijiet awk ta 'spiss huma kkombinati ma' kmandijiet sodi .