Cumu scrivite cumandamenti è Scripts AWK

Mandati, sintassi e esempi

U cumandru awkje hè un mudellu putente per u procesatu o analizà i schedari di testu, in particulari, i schedarii di dati chì sò urganizati da linii (file) è colonnes.

Ordinarii cummincii senzati pò esse ghjucatu da a linea di cumanda . E cumpetenze cumplicità devessu esse scrittu cum'è programas awk (scripti awk scritti) à un schedariu.

U formatu fundamentale di un cumanda awkate hè questu questu:

u patruni di awk '{action}' input-file> output-file

Questu significa: piglià ogni linea di u file input; se a linia cuntene u patronu applicà l'azzioni à a linea è scrive a linee resultanti à u cartulare-output. Se u patronu hè omessu, l'azzione hè appiicata à tutta a linea. Per esempiu:

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

Questa affirmazione seguitanu l'elementu di a 5a colonna di ogni linea è a scrivetu com'è una linea in u schedariu di uputtu "output.txt". A variable "$ 4" riferisce à a seconda colonna. Cumu pudete puru accede à a prima, a seconda è a terza colonna, cù $ 1, $ 2, $ 3, etc. Da culonie predeterminate sò presumintati chì sò separati da spazii o tabulazione (chjamatu spazi biancu). Allora, se u file input "table1.txt" cuntene queste fili:

1, Justin Timberlake, Titulu 545, Prezzo $ 7,30 2, Taylor Swift, Titulu 723, Prezzo $ 7,90 3, Mick Jagger, Titulu 610, Prezzo $ 7,90 4, Lady Gaga, Titulu 118, Prezzo $ 7,30 5, Johnny Cash, Titulu 482, Prezzo $ 6,50 6, Elvis Presley, Titulu 335, Prezzo $ 7,30 7, John Lennon, Titulu 271, Prezzo $ 7,90 8, Michael Jackson, Titulu 373, Prezzo $ 5,50

Allora u cumandò scrivevi e seguenti linee à u schedariu di uputtu "output1.txt":

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

Se u separatore di a colonna hè qualchì altru ch'è spazii o tabulavvi, cum'è una comma, pudete spiegà quellu chì in a manifestazione staghjone dinò:

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

Questu averebbe sceglie l'elementu da a culonna 3 di ogni linea, se i culonni sò cunsiderate per esse separati da una vigna. Per quessa a pruduzzioni, in questu casu, sarete:

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

A lista di i manifestazioni trà i chjassi di u curly ("{','} ') hè chjamatu un pezzu. Se mette una espressione condicioni in fronte di un blocu, a manifestazione di u pezzu serà esercitu solu se a cundizione hè vera.

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

In questu casu, a cundizione hè $ 7 == "\ $ 7.30", chì significa chì l'elementu à a 7 colonna hè ugualu $ 7,30. A retrocera di fronte à u signu di u dòrica hè utilizata per impedisce u sistema da interprete $ 7 per una variable è invece piglià u signu di dòricu.

Allura sta manifesta tistimoniata stampi l'elementu à a 3a colonna di ogni linea chì hà un "$ 7,30" à a columna 7.

Pudete ancu puru l'espressioni regula cum'è a cundizione. Per esempiu:

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

A catena trà i dui slashes ('/') hè l'espressione regulare. In questu casu, hè solu a catena "30." Questu significa chì una linea cuntene a string "30", u sistema imprime l'elementu à a 3a colonna di quella linea. U risultatu in l'esempiu di più esse:

Timberlake, Gaga, Presley,

Se l'elementi di tavulinu sò numeri, averna pò esse calculati nantu à elli cum'è questu esempiu:

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

In più di e variàbili chì accessu elementi di a fila curretta ($ 1, $ 2, etc.), hè a variable $ 0 chì si riferisce à a filetta completa (a linea), è a varià NF chì cuntene à u numeru di campi.

Pudete puru di definisce e novi variate cum'è questu esempiu:

awk '{sum = 0; per (col = 1; col <= NF; col + +) sum + = $ col; print sum } '

Questu compiche è stampà a summa di tutti l'elementi di ogni fila.

Aghjunghje raghjunghjeghju sò assuciatu in spessu cù i cumandos .