Conas a Scríobh Orduithe agus Scripteanna AWK

Orduithe, comhréir, agus samplaí

Is modh cumhachtach é an t-ordú awk chun comhaid téacs a phróiseáil nó a anailísiú-go háirithe, comhaid sonraí atá eagraithe ag línte (sraitheanna) agus colúin.

Is féidir orduithe simplí awk a reáchtáil ón líne ordaithe . Ba cheart tascanna níos casta a scríobh mar chláir awk (scripteanna awk mar a thugtar air) chuig comhad.

Is cosúil seo mar bhunús bunúsach ordú awk:

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

Ciallaíonn sé seo: gach líne den chomhad ionchuir a ghlacadh; má tá an líne sa phátrún, cuirfear an gníomh leis an líne agus scríobh an líne mar thoradh ar an gclár aschuir. Má fágtar an patrún ar lár, cuirtear an gníomh i bhfeidhm ar gach líne. Mar shampla:

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

Glacann an ráiteas seo an eilimint den 5ú colún de gach líne agus scríobhann sé mar líne sa chomhad aschuir "output.txt". Tagraíonn an t-athróg '$ 4' don dara colún. Ar an gcaoi chéanna is féidir leat rochtain a fháil ar an gcéad colún, an dara, agus an tríú colún, le $ 1, $ 2, $ 3, srl. Glactar le spásanna nó cluaisíní (mar a dtugtar spás bán mar a thugtar air) mar gheall ar na colúin réamhshocraithe. Mar sin, má tá na línte seo sa chomhad ionchuir "table1.txt":

1, Justin Timberlake, Teideal 545, Praghas $ 7.30 2, Taylor Swift, Teideal 723, Praghas $ 7.90 3, Mick Jagger, Teideal 610, Praghas $ 7.90 4, Lady Gaga, Teideal 118, Praghas $ 7.30 5, Johnny Cash, Teideal 482, Praghas $ 6.50 6, Elvis Presley, Teideal 335, Praghas $ 7.30 7, John Lennon, Teideal 271, Praghas $ 7.90 8, Michael Jackson, Teideal 373, Praghas $ 5.50

Ansin, scríobhfadh an t-ordú na línte seo a leanas don chomhad aschuir "output1.txt":

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

Más rud é go bhfuil an scaradh colún rud éigin seachas spásanna nó cluaisíní, mar choma, is féidir leat a shonrú sa ráiteas awk mar seo a leanas:

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

Roghnóidh sé seo an eilimint ó cholún 3 de gach líne má mheasann coma iad na colúin. Dá bhrí sin, bheadh ​​an t-aschur, sa chás seo:

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

Tugtar bloc ar liosta na ráiteas taobh istigh den lúibíní coileach ('{', '}'). Má chuireann tú léiriú coinníollach os comhair bloc, ní dhéanfar an ráiteas taobh istigh den bhloc ach amháin má tá an coinníoll fíor.

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

Sa chás seo, is é $ 7 == "\ $ 7.30 an coinníoll", rud a chiallaíonn go bhfuil an eilimint ag colún 7 comhionann le $ 7.30. Úsáidtear an backslash os comhair an chomhartha dollar chun cosc ​​a chur ar an gcóras ó $ 7 a athrú mar athróg agus ina dhiaidh sin glacann sé an comhartha dollar go liteartha.

Mar sin, cuireann an ráiteas awk seo amach an eilimint ag an 3ú colún de gach líne a bhfuil "$ 7.30" ag colún 7.

Is féidir leat abairtí rialta a úsáid mar an gcoinníoll freisin. Mar shampla:

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

Is é an sreang idir an dá slashes ('/') an abairt rialta. Sa chás seo, is é an téad díreach "30." Ciallaíonn sé seo má tá an sreang "30" i líne, má dhéanann an córas amach an eilimint ag an tríú colún den líne sin. Ba é an t-aschur sa sampla thuas ná:

Timberlake, Gaga, Presley,

Más féidir leis na heilimintí tábla uimhreacha awk reáchtáil ríomhairí orthu mar atá sa sampla seo:

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

Chomh maith leis na hathróga go bhfuil athruithe ar an tsraith reatha ($ 1, $ 2, etc.) ann an athróg $ 0 a thagraíonn don tsraith iomlán (líne), agus an NF athróg atá ag gabháil leis an líon réimsí.

Is féidir leat athróga nua a shainmhíniú mar atá sa sampla seo:

awk '{sum = 0; le haghaidh (col = 1; col <= NF; col ++) sum + = $ col; suim chlóite; } '

Déanann sé seo suim na n-eilimintí uile de gach sraith a mheas agus a phriontáil.

Is minic a chuirtear ráitis awk le horduithe sed .