AWK հրամանը Linux-ում օրինակներով
Եթե դուք աշխատում եք Linux-ով, ապա կարող եք հանդիպել AWK հրամանին: AWK-ն տեքստի մշակման հզոր գործիք է, որն օգտագործվում է մի շարք խնդիրների համար, ինչպիսիք են տվյալների զտումը, մանիպուլյացիան և փոխակերպումը: Այս հոդվածում մենք մանրամասն կուսումնասիրենք AWK հրամանը՝ ներառյալ դրա շարահյուսությունը, գործառույթները և օգտագործման օրինակները:
Ի՞նչ է AWK հրամանը Linux-ում:
AWK-ն ծրագրավորման լեզու և գործիք է, որն օգտագործվում է տեքստի մշակման և տվյալների մանիպուլյացիայի համար: Այն սովորաբար օգտագործվում է տեքստային ֆայլերից տվյալների արդյունահանման և մանիպուլյացիայի համար, բայց այն կարող է օգտագործվել նաև ավելի բարդ խնդիրների համար, ինչպիսիք են հաշվետվությունների ստեղծումը, տվյալների վերլուծությունը և այլն: AWK-ն հասանելի է գրեթե բոլոր Unix-ի վրա հիմնված համակարգերում և հաճախ օգտագործվում է հրամանի տող այլ գործիքների հետ համատեղ, ինչպիսիք են sed-ը և grep-ը:
AWK հրամանի շարահյուսություն
AWK հրամանն ունի պարզ շարահյուսություն, որը բաղկացած է մի շարք օրինաչափություններից և գործողություններից: Նախշերը օգտագործվում են մուտքագրման որոշակի տողերին համապատասխանեցնելու համար, մինչդեռ գործողություններն օգտագործվում են հստակեցնելու համար, թե ինչ պետք է արվի այդ տողերի հետ: Ահա AWK հրամանի հիմնական շարահյուսության օրինակ
awk 'pattern { action }' input_file
Նմուշը կցվում է մեկ չակերտների մեջ և նշում, թե մուտքագրված ֆայլի որ տողերը պետք է մշակվեն: գործողությունը պարփակված է գանգուր փակագծերի մեջ և նշում է, թե ինչ պետք է անել այդ գծերի հետ: Բազմաթիվ օրինաչափություններ և գործողություններ կարող են համակցվել ավելի բարդ սցենարներ ստեղծելու համար:
AWK հրամանի գործառույթները
AWK-ն ունի մի շարք ներկառուցված գործառույթներ, որոնք կարող են օգտագործվել տվյալների մանիպուլյացիայի և մշակման համար: Ահա մի քանի առավել հաճախ օգտագործվող ֆունկցիաներ −
-
print - Այս ֆունկցիան օգտագործվում է տեքստը կոնսոլում կամ ֆայլ տպելու համար:
printf - Այս ֆունկցիան օգտագործվում է տեքստը ձևաչափելու և այն կոնսոլում կամ ֆայլում տպելու համար:
length - Այս ֆունկցիան օգտագործվում է տողի երկարությունը որոշելու համար:
substr - Այս ֆունկցիան օգտագործվում է տողից ենթատող հանելու համար:
split − Այս ֆունկցիան օգտագործվում է տողը զանգվածի բաժանելու համար՝ հիմնված որոշակի սահմանազատողի վրա:
getline - Այս ֆունկցիան օգտագործվում է մուտքագրման հաջորդ տողը կարդալու համար:
AWK հրամանի օրինակներ
Այժմ, երբ մենք հասկանում ենք AWK հրամանի հիմնական շարահյուսությունը և գործառույթները, եկեք տեսնենք մի քանի օրինակներ, թե ինչպես այն կարող է օգտագործվել:
Օրինակ 1. Տպել ֆայլի բովանդակությունը
AWK հրամանի ամենապարզ օգտագործումը ֆայլի բովանդակությունը մխիթարելն է: Ահա թե ինչպես դա անել -
awk '{ print }' input_file
Այս սկրիպտը կհամապատասխանի մուտքային ֆայլի յուրաքանչյուր տողին և կտպագրի այն մխիթարել:
Օրինակ 2. Տպել ֆայլի հատուկ սյունակներ
AWK-ի ամենատարածված օգտագործումներից մեկը ֆայլից հատուկ սյունակներ հանելն է: Ահա, թե ինչպես կարելի է հանել ֆայլի առաջին և երրորդ սյունակները −
awk '{ print $1, $3 }' input_file
Այս սկրիպտը կհամապատասխանի մուտքային ֆայլի յուրաքանչյուր տողին և տպելու է առաջին և երրորդ սյունակները կոնսոլում:
Օրինակ 3. Զտել գծերը՝ հիմնված պայմանի վրա
AWK-ն կարող է օգտագործվել նաև պայմանի հիման վրա գծերը զտելու համար: Ահա թե ինչպես կարելի է տպել ֆայլի բոլոր տողերը, որոնք պարունակում են «սխալ» բառը −
awk '/error/ { print }' input_file
Այս սկրիպտը կհամապատասխանի մուտքային ֆայլի յուրաքանչյուր տողին, որը պարունակում է «սխալ» բառը և կտպի այն մխիթարել:
Օրինակ 4. Գումարային արժեքները սյունակում
AWK-ն կարող է օգտագործվել նաև տվյալների վրա մաթեմատիկական գործողություններ կատարելու համար: Ահա, թե ինչպես կարելի է գումարել արժեքները ֆայլի երկրորդ սյունակում −
awk '{ sum += $2 } END { print sum }' input_file
Այս սկրիպտը կավելացնի բոլոր արժեքները մուտքային ֆայլի երկրորդ սյունակում և կտպագրի ընդհանուրը վահանակում:
Օրինակ 5. հանել ենթատողը սյունակից
Մեկ այլ ընդհանուր խնդիր է ֆայլի սյունակից ենթատող հանելը: Ահա, թե ինչպես կարելի է հանել առաջին երեք նիշերը ֆայլի առաջին սյունակից −
awk '{ print substr($1, 1, 3) }' input_file
Այս սկրիպտը կհանի առաջին երեք նիշերը մուտքային ֆայլի առաջին սյունակից և տպելու դրանք վահանակում:
Օրինակ 6. Միացնել երկու ֆայլ՝ հիմնված ընդհանուր սյունակի վրա
AWK-ն կարող է օգտագործվել նաև ընդհանուր սյունակի հիման վրա երկու ֆայլ միացնելու համար: Ահա թե ինչպես կարելի է միացնել երկու ֆայլ՝ հիմնվելով առաջին սյունակի արժեքի վրա
awk 'NR==FNR{a[$1]=$2;next}{ print $0, a[$1] }' file1 file2
Այս սցենարը կկարդա առաջին ֆայլը հիշողության մեջ և կստեղծի զանգված երկրորդ սյունակում գտնվող արժեքներով: Այնուհետև այն կկարդա երկրորդ ֆայլը և կտպագրի յուրաքանչյուր տողը, որին կհաջորդի համապատասխան արժեքը առաջին ֆայլից:
Օրինակ 7. Արտահանել ֆայլի առաջին սյունակը
AWK հրամանի միջոցով ֆայլի առաջին սյունակը հանելու համար օգտագործեք հետևյալ շարահյուսությունը −
$ awk '{ print $1 }' filename
Այստեղ $1-ը վերաբերում է մուտքային ֆայլի առաջին սյունակին: print հրամանը օգտագործվում է արդյունքը ցուցադրելու համար:
Օրինակ 8. Հաշվել սյունակի միջինը
AWK հրամանի միջոցով սյունակի միջինը հաշվարկելու համար օգտագործեք հետևյալ շարահյուսությունը −
$ awk '{ sum += $1 } END { print sum / NR }' filename
Այստեղ գումարը փոփոխական է, որը պահում է արժեքների գումարը առաջին սյունակում: NR-ը ներկառուցված փոփոխական է, որը պահպանում է AWK հրամանով մշակված գրառումների (գծերի) քանակը: END նախշը համընկնում է մուտքային ֆայլի վերջի հետ:
Օրինակ 9. Փոխարինեք տողը ֆայլում
AWK հրամանի միջոցով ֆայլում տողը փոխարինելու համար օգտագործեք հետևյալ շարահյուսությունը −
$ awk '{ gsub("oldstring", "newstring") } 1' filename
Այստեղ gsub-ը ֆունկցիա է, որը փոխարինում է հին տողերի բոլոր երևույթները նոր տողով: 1 նախշը համապատասխանում է մուտքային ֆայլի բոլոր տողերին:
Օրինակ 10. Ցուցադրել ֆայլի վերջին դաշտը
AWK հրամանի միջոցով ֆայլի վերջին դաշտը ցուցադրելու համար օգտագործեք հետևյալ շարահյուսությունը −
$ awk '{ print $NF }' filename
Այստեղ $NF-ը վերաբերում է մուտքային ֆայլի վերջին դաշտին: print հրամանը օգտագործվում է արդյունքը ցուցադրելու համար:
Օրինակ 11. Կանոնավոր արտահայտությունների օգտագործում
Կանոնավոր արտահայտությունները AWK հրամանի հզոր հատկանիշն են, որը թույլ է տալիս օգտվողներին փնտրել օրինաչափություններ տվյալների մեջ: Ահա մի օրինակ, որը ցույց է տալիս կանոնավոր արտահայտությունների օգտագործումը −
$ awk '/pattern/ { print }' filename
Այստեղ /pattern/-ը կանոնավոր արտահայտություն է, որը համապատասխանում է օրինաչափություն պարունակող ցանկացած տողի:
Օրինակ 12. Փոփոխականների օգտագործում
Փոփոխականները կարող են օգտագործվել AWK հրամանում` պահելու արժեքներ, որոնք կարող են օգտագործվել գործողություններում: Ահա մի օրինակ, որը ցույց է տալիս փոփոխականների օգտագործումը −
$ awk '{ total += $1 } END { print "Total: ", total }' filename
Այստեղ ընդհանուր փոփոխականն օգտագործվում է առաջին սյունակում արժեքների գումարը պահելու համար:
Օրինակ 13. Ներկառուցված փոփոխականների օգտագործում
AWK հրամանն ունի մի քանի ներկառուցված փոփոխականներ, որոնք կարող են օգտագործվել տարբեր առաջադրանքներ կատարելու համար: Ահա մի քանի օրինակներ −
FS − դաշտերի բաժանարար փոփոխականն օգտագործվում է մուտքային ֆայլում դաշտերը առանձնացնելու համար օգտագործվող սահմանազատիչը նշելու համար: Լռելյայնորեն այն դրված է բացատների վրա:
RS − գրառումների բաժանարար փոփոխականն օգտագործվում է սահմանազատիչը, որն օգտագործվում է մուտքային ֆայլում գրառումներն առանձնացնելու համար: Լռելյայն, այն սահմանված է նոր տողի նիշով:
OFS − ելքային դաշտի տարանջատիչ փոփոխականն օգտագործվում է ելքային դաշտերը առանձնացնելու համար օգտագործվող սահմանազատիչը նշելու համար: Լռելյայնորեն այն դրված է բացատների վրա:
ORS − ելքային գրառումների տարանջատիչ փոփոխականն օգտագործվում է սահմանազատիչը նշելու համար, որն օգտագործվում է ելքի մեջ գրառումները առանձնացնելու համար: Լռելյայն, այն սահմանված է նոր տողի նիշով:
Օրինակ 14. Վերահսկիչ հայտարարությունների օգտագործում
Վերահսկիչ հայտարարությունները, ինչպիսիք են if-else և while հանգույցները, կարող են օգտագործվել AWK հրամանում պայմանական գործողություններ կատարելու համար: Ահա մի օրինակ, որը ցույց է տալիս if-else հայտարարությունների օգտագործումը −
$ awk '{ if ($1 > 50) { print "Pass" } else { print "Fail" } }' filename
Այստեղ, եթե առաջին սյունակի արժեքը 50-ից մեծ է, ելքը կլինի «Pass», հակառակ դեպքում՝ «Fail»:
Օրինակ 15. Ֆունկցիաների օգտագործումը
Գործառույթները կարող են սահմանվել և օգտագործվել AWK հրամանում բարդ գործողություններ կատարելու համար: Ահա մի օրինակ, որը ցույց է տալիս − ֆունկցիաների օգտագործումը
$ awk 'function square(x) { return x*x } { print square($1) }' filename
Այստեղ ֆունկցիայի քառակուսին սահմանվում է և օգտագործվում է առաջին սյունակի արժեքի քառակուսին հաշվարկելու համար:
Եզրակացություն
AWK հրամանը հզոր գործիք է Linux-ում տեքստի մշակման և տվյալների մանիպուլյացիայի համար: Իր պարզ շարահյուսությամբ, ներկառուցված գործառույթներով և բարդ առաջադրանքներ կատարելու ունակությամբ, AWK-ն կարևոր գործիք է ցանկացած Linux օգտագործողի համար: Օգտագործելով օրինակներ այս հոդվածում, դուք պետք է կարողանաք սկսել AWK-ն և սկսեք բացել դրա ամբողջ ներուժը: