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-fileQuestu 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.txtQuesta 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,50Allora 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.txtQuestu 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 373A 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.txtIn 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.txtA 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 .