Հրամաններ, շարահյուսություն եւ օրինակներ
The awk հրահանգը հզոր մեթոդ է տեքստային ֆայլերի մշակման կամ վերլուծման համար, մասնավորապես տվյալների ֆայլերը, որոնք կազմակերպվում են տողերի (տողերի) եւ սյուների կողմից:
Պարզ awk հրամանները կարող են հրամանի տողից գործարկել: Ավելի բարդ խնդիրներ պետք է գրվեն որպես awk ծրագրեր (այսպես կոչված, awk սցենարներ) ֆայլ:
Awk հրամանի հիմնական ձեւաչափը կարծես նման է.
awk 'pattern {action}' ներդրման-ֆայլ> արտադրանքի-ֆայլըՍա նշանակում է `մուտքագրել ֆայլի յուրաքանչյուր տողը. եթե գիծը պարունակում է օրինակ, գործողությունը կիրառվում է գծի մեջ եւ արդյունքում ստացվում է ելքային ֆայլը: Եթե նմուշը բացակայում է, ակցիան կիրառվում է բոլոր տողում: Օրինակ:
awk '{print $ 5}' table1.txt> output1.txtԱյս հայտարարությունը տանում է յուրաքանչյուր տողի 5-րդ սյունակի տարրը եւ այն գրում է որպես «output.txt» արտադրանքի ֆայլի տող: '$ 4' փոփոխականը վերաբերում է երկրորդ սյունակին: Նմանապես դուք կարող եք մուտք գործել առաջին, երկրորդ եւ երրորդ սյունակ, $ 1, $ 2, $ 3 եւ այլն: Լռելյայն սյունակները ենթադրում են, որ դրանք առանձնացված են տարածքների կամ ներդիրների կողմից (այսպես կոչված `սպիտակ տարածություն): Այսպիսով, եթե «table1.txt» ներածման ֆայլը պարունակում է հետեւյալ տողերը,
1, Ջասթին Թիմբերլեյք, Title 545, Գին $ 7.30 2, Թեյլոր Սվիֆթ, Title 723, Գին $ 7.90 3, Միք Ջագեր, Title 610, Գինը $ 7.90 4, Lady Gaga, Title 118, Գին $ 7.30 5, Johnny Cash, վերնագիրը 482, Գին $ 6.50 6, Elvis Presley, Title 335, Գին $ 7.30 7, Ջոն Լենոն, Title 271, Գինը $ 7.90 8, Մայքլ Ջեքսոն, Title 373, Գին $ 5.50Այնուհետեւ հրամանագիրը գրել է հետեւյալ տողերը «output1.txt» արտադրանքի ֆայլին:
545, 723, 610, 118, 482, 335, 271, 373,Եթե սյունակն անջատողը բացի այլ տարածքներից կամ ներդիրներից բացի այլ բան է, օրինակ `ստորակետ, դուք կարող եք նշել այն, որ awk- ի հայտարարության մեջ հետեւյալն է.
awk -F, '{print $ 3}' table1.txt> output1.txtՍա յուրաքանչյուր գիծի 3-րդ սյունակից ընտրում է տարրը, եթե սյունները համարվում են առանձնացված ստորակետով: Հետեւաբար արտադրանքը, այս դեպքում, կլինի:
Վերնագիր 545 Title 723 Title 610 Title 118 Կազմ Title 482 Title 335 Title 271 Title 373Կտրուկ փակագծերի ներսում գտնվող հայտարարությունների ցանկը («{», '}') կոչվում է բլոկ: Եթե դուք պայմանական արտահայտություն եք դնում բլոկի դիմաց, բլոկի մեջ նշված հայտարարությունը կկատարվի միայն այն դեպքում, եթե պայմանը ճիշտ է:
awk '$ 7 == "\ $ 7.30" {print $ 3} "table1.txtԱյս դեպքում պայմանը $ 7 == "\ $ 7.30" է, ինչը նշանակում է, որ սյունակի 7 տարրը հավասար է $ 7.30-ի: Դոլարի նշանի դիմաց ճեղքվածքը օգտագործվում է համակարգը կանխելու համար $ 7-ը որպես փոփոխական եւ փոխարենը դոլարի նշան է վերցնում բառացիորեն:
Այսպիսով, այս awk հայտարարությունը տպագրում է տարրը 7-րդ սյունակում յուրաքանչյուր գծի 3-րդ սյունակում, որը ունի «$ 7.30»:
Դուք նաեւ կարող եք օգտագործել կանոնավոր արտահայտություններ, որպես պայման: Օրինակ:
awk '/ 30 / {print $ 3}' table1.txtԵրկու սլայաների ('/') միջեւ լարվածությունը հերթական արտահայտությունն է: Այս դեպքում դա պարզապես «30.» տող է: Սա նշանակում է, որ գծի պարունակությունը պարունակում է «30» տող, համակարգը տպում է այդ գծի 3-րդ սյունակում գտնվող տարրը: Վերոնշյալ օրինակում արտադրանքը կարող է լինել,
Timberlake, Gaga, Presley,Եթե սեղանի տարրերը awk թվեր են, կարող են հաշվարկներ կատարել դրանց վրա, ինչպես օրինակ այս օրինակում.
awk '{print ($ 2 * $ 3) + $ 7}' 'Բացի ընթացիկ շարքի տարրերի ($ 1, $ 2, եւ այլն) փոփոխականներից, կա $ 0 փոփոխական, որը վերաբերում է ամբողջական շարքին (գծին) եւ NF- ի փոփոխական դաշտերին, որոնք ունեն դաշտերի շարք:
Դուք կարող եք նաեւ սահմանել նոր փոփոխականներ, ինչպես այս օրինակում:
awk '{sum = 0; (col = 1; col <= NF, col ++) գումարը + = $ col; տպագիր գումարը; } 'Սա հաշվարկում եւ տպում է յուրաքանչյուր շարքի բոլոր տարրերի գումարը:
Awk- ի հայտարարությունները հաճախ համակցվում են հրամանների հետ :