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-ն և սկսեք բացել դրա ամբողջ ներուժը: