Sida loo qoro Amarada AWK iyo Scripts

Amarrada, ereyga, iyo tusaalooyinka

Amarku waa hab awood badan oo loo adeegsado ama lagu falanqeeyo faylasha qoraalka-gaar ahaan, feylalaha xogta ee ay ku habboon yihiin xariiqyo (saf) iyo tiirar.

Amarrada fudud ee sirta ah ayaa laga dhex socon karaa khadka taliska . Shaqooyinka culus ee adag waa in loo qoraa sida barnaamijyada cajiibka ah (oo loo yaqaan "scripts awk").

Nooca asaasiga ah ee talisku waa sida tan:

awk 'tusaaley {action}' faylka-faylka> faylka-faylka

Taas macnaheedu waa: qaado xariiq kasta oo ka mid ah faylasha xogta; haddii khadka uu ku jiro qaabka uu ku dabaqayo ficilka khadka iyo qor qayaxan soo-saarka feylka. Haddii qaabka la tirtiray, ficilka waxaa lagu dabaqayaa dhammaan lineka. Tusaale ahaan:

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

Qoraalkan wuxuu qaadaa walxaha qaybta 5aad ee xariiqa kasta wuxuuna u qoraa sida xariiqda feylka "output.txt". $ 4 'variable' waxaa loola jeedaa tiirka labaad. Sidoo kale waxaad ka heli kartaa midka koowaad, labaad, iyo sadexaad, oo leh $ 1, $ 2, $ 3, iwm. Waxaa loo maleynayaa in ay ku kala duwan yihiin goobaha ama tabsiyada (oo loogu yeedho booska cad). Sidaas, haddii faylka xogta "table1.txt" uu ka kooban yahay khadadahan:

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

Markaas amarku wuxuu qori doonaa xariiqyada soo socda feylka soo saaraha "output1.txt":

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

Haddii kala-saaraha suunka waa wax aan ka ahayn boosaska ama tabsiyada, sida virgasha, waxaad ku cadeyn kartaa in caddaymaha sida soo socota:

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

Tani waxay dooran doontaa halbeegga sadarka 3 ee xariiqa kasta haddii tiirarka loo tixgeliyo in lagu kala tago jumlad. Sidaa darteed soo saaraha, kiiskan, wuxuu noqon lahaa:

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

Liiska ereyada ka dhexjira garbaha adag ('' '') 'waxaa loo yaqaanaa block. Haddii aad soo bandhigto shuruudaha shuruudaha ah ee horay uga soo horjeeda, qoraalka ku jira gudaha dhismaha ayaa la fulin doonaa oo keliya haddii xaaladdu run tahay.

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

Xaaladdan, xaaladdu waa $ 7 == "$ 7.30", taas oo macnaheedu yahay in cutubka 7 uu yahay mid u dhigma $ 7.30. Dhaqdhaqaaqa gadaashiisa hore ee dollarka waxaa loo isticmaalaa si looga hortago nidaamka tarjumada $ 7 oo ah isbeddel waana inaa ka dhigtaa saxeexa doolarka macno ahaan.

Sidaa daraadeed bayaankani wuxuu daabacayaa cutubka 3-aad ee xariiq kasta oo leh "$ 7.30" oo ku yaala qodobka 7.

Waxaad sidoo kale isticmaali kartaa tibaaxo joogto ah sida xaaladda. Tusaale ahaan:

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

Noocyada udhexeeya labada dhinac ('/') waa hadal caadi ah. Xaaladdan oo kale, waa uun xaraf "30." Tani macnaheedu waa haddii xariiq ay ku jirto "30", nidaamku wuxuu daabacayaa cutubka sadarka 3aad ee lineka. Soo saarida tusaalaha kor ku xusan waxay noqon doontaa:

Timberlake, Gaga, Presley,

Haddii jadwalka miisaanku yahay lambarro tiradoodu waxay ku xisaabin karaan xisaabaadka iyaga ku jira sida tusaale ahaan:

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

Ka sokow bedelaadaha isuguna jira khadadka hadda ($ 1, $ 2, iwm.) Waxaa jira $ 0 oo ku xiran safka dhamaystiran (line), iyo isbedelka NF ee haya tirooyinka.

Waxaad sidoo kale qeexi kartaa doorsoomayaal cusub sida tusaale ahaan:

Awk '{sum = 0; waayo (col = 1; col. <= NF; col + + +) sum + = $ col; daabacaadda; ▣ "

Tani waxay xisaabisaa isla markaana waxay daabacaysaa dhammaantiismooyinka safka kasta.

Hadalka Awk waxaa badanaa la isugu daraa amarada rasmiga ah .