Linux-ում AWK ծրագրավորման լեզվի ուղեցույց


Ներածություն

AWK-ն սկրիպտավորման լեզու է, որն օգտագործվում է Linux-ում տեքստի մշակման համար: Այն նախագծված է տեքստային ֆայլերում տվյալները շահարկելու համար՝ դարձնելով այն իդեալական գործիք տվյալների վերլուծության և կառավարման առաջադրանքների համար: Ներկառուցված մի շարք գործառույթների և օպերատորների միջոցով AWK-ն կարող է կատարել պարզ որոնում և փոխարինել առաջադրանքները կամ տվյալների բարդ փոխակերպումները: Նրա հակիրճ շարահյուսությունը և բազմակողմանիությունը թույլ են տալիս հեշտությամբ կառավարել տեքստային ֆայլերը: AWK-ն հզոր գործիք է նրանց համար, ովքեր աշխատում են տեքստային ֆայլերով Linux միջավայրերում:

Եկեք տրամադրենք Linux-ի AWK ծրագրավորման լեզվի սկսնակների ուղեցույց: Մենք կանդրադառնանք լեզվի հիմնական շարահյուսությանը, տարբեր տեսակի գործողություններին, որոնք կարող են իրականացվել AWK-ի միջոցով և ինչպես օգտագործել AWK-ն՝ տեքստային ֆայլերը մշակելու համար: Մենք նաև կտրամադրենք ծածկագրի օրինակներ և ելք՝ ծածկված յուրաքանչյուր գործողությունների համար:

AWK-ի տեղադրում Linux օպերացիոն համակարգում

Այն տեղադրելու եղանակներից մեկը մեր Linux բաշխման կողմից տրամադրված փաթեթների կառավարչի օգտագործումն է: Ահա տեղադրման հրամանը −

$ sudo apt-get install gawk

Տեղադրելուց հետո մենք կարող ենք ստուգել AWK-ի տարբերակը Linux-ում −

$ awk --version

Եթե AWK-ն տեղադրված է, հրամանը կցուցադրի տարբերակի համարը:

Փոփոխականներ AWK ծրագրավորման լեզվում

AWK-ն ապահովում է մի շարք ներկառուցված փոփոխականներ, որոնք կարող են օգտագործվել օրինաչափություններում և գործողություններում: Ամենաշատ օգտագործվող փոփոխականներն են −

  • NR - ներկայացնում է ընթացիկ գրառման (գծի) համարը

  • NF - ներկայացնում է մուտքագրման գրառման դաշտերի ընդհանուր թիվը:

  • $0 − Ամբողջ ընթացիկ գրառումը:

  • $1, $2, $3, … − Առաջին, երկրորդ, երրորդ, … դաշտը ընթացիկ գրառումում:

Բացի այս ներկառուցված փոփոխականներից, AWK-ն թույլ է տալիս նաև օգտագործողի կողմից սահմանված փոփոխականներ: Օգտատիրոջ կողմից սահմանված փոփոխականներին կարելի է արժեքներ վերագրել՝ օգտագործելով=օպերատորը:

AWK հրամանի տողի ընտրանքներ

AWK-ն սովորաբար կանչվում է հրամանի տողից՝ օգտագործելով awk հրամանը, որն ընդունում է տարբեր տարբերակներ և փաստարկներ: Ահա հաճախ օգտագործվող տարբերակների ցանկը −

  • -F − սահմանում է մուտքային ֆայլերի դաշտերի բաժանարարը:

  • -v - Սահմանում է արժեք փոփոխականի համար:

  • -f - սահմանում է AWK սցենարի ֆայլը, որը պետք է կատարվի:

  • -n - անջատում է տողերի ավտոմատ տպագրությունը:

  • -W - հնարավորություն է տալիս նախազգուշացումները:

Ֆայլից դաշտեր հանելը AWK-ի միջոցով

Ենթադրենք, որ մենք ունենք CSV ֆայլի անվանում «filename.csv» հետևյալ ձևաչափով −

name, age, gender
Papan, 22, Male
Priya, 27, Female

Տարիքի և սեռի դաշտերը հանելու համար մենք կարող ենք օգտագործել հետևյալ հրամանը −

$ awk -F, '{ print $2, $3 }' filename.csv

Այս AWK կոդը կտպագրի CSV ֆայլի երկրորդ և երրորդ դաշտերը (սյունակները), որը կոչվում է «filename.csv», իսկ սահմանազատիչը ստորակետ է («,»):

Ահա բացատրությունը −

  • «awk» - AWK սկրիպտը գործարկելու համար օգտագործվող հրամանը

  • ‘-F,’ − Այս ընտրանքը դաշտի բաժանարարը դնում է ստորակետի վրա: Սա հրահանգում է AWK-ին վերաբերվել CSV ֆայլին որպես ստորակետներով որպես սահմանազատող դաշտերի միջև:

  • “ ' { print $2, $3 }' ” − Սա ինքնին AWK սցենարն է: Այն հրահանգում է AWK-ին տպել ֆայլի յուրաքանչյուր տողի երկրորդ և երրորդ դաշտերը՝ բաժանված բացատով:

age gender
22 Male
27 Female

Այս հրամանը սահմանում է դաշտերի բաժանիչը ստորակետով (-F,) և տպում է երկրորդ և երրորդ դաշտերը ($2, $3) ֆայլի յուրաքանչյուր տողի համար:

Տվյալների զտում AWK հրամանի միջոցով

Մենք ունենք «data.txt» անունով ֆայլ, որը պարունակում է տեղեկություններ ուսանողների մասին, ինչպիսիք են նրանց անունը, տարիքը և դասարանը: Մենք ցանկանում ենք զտել միայն «Ա» գնահատական ունեցող ուսանողներին։

Օրինակ

Տեղադրեք ստորև բերված բովանդակությունը «data.txt» ֆայլի վրա −

John, 18, A
Sara, 19, B
Mike, 20, A
Lisa, 18, C
Tom, 19, A

«A» գնահատական ունեցող ուսանողներին զտելու համար մենք կարող ենք օգտագործել հետևյալ AWK հրամանը −

$ awk '$3=="A" {print}' data.txt

Արդյունք

John, 18, A
Mike, 20, A
Tom, 19, A

Ինչպես տեսնում ենք, տպագրվել են միայն «Ա» գնահատական ունեցող տողերը։

Օրինակ

Մենք կարող ենք նաև օգտագործել if հայտարարությունը AWK հրամանում ավելի բարդ ֆիլտրում իրականացնելու համար: Օրինակ, եթե մենք ցանկանում ենք զտել միայն 18 տարեկանից բարձր և «A» գնահատական ունեցող ուսանողներին, կարող ենք օգտագործել հետևյալ AWK հրամանը.

$ awk '$2>18 && $3=="A" {print}' data.txt

Արդյունք

Mike, 20, A
Tom, 19, A

Ինչպես տեսնում ենք, տպագրվել են միայն երկու պայմաններին համապատասխանող տողերը։

Loops-ի ներդրում՝ օգտագործելով AWK հրամանը

Կան 3 հանգույց −

  • իսկ Loop

  • do-while Loop

  • Loop-ի համար

Այստեղ մենք իրականացնում ենք միայն «for loop»:

Նախ պատրաստեք «input.txt» ֆայլ և դրեք ստորև բերված բովանդակությունը

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

Այժմ, եկեք ուսումնասիրենք, թե ինչպես կարող ենք օգտագործել հանգույցները AWK-ում՝ այս ֆայլի տվյալները մշակելու համար:

Ստեղծեք մեկ այլ ֆայլի անուն «program.awk»

Հետևյալ AWK ծրագիրը օգտագործում է for loop՝ ֆայլի յուրաքանչյուր տող տպելու համար

{
   for (i = 1; i <= NF; i++) {
      printf("%s ", $i);
   }
   printf("
");
}

Այս ծրագրում նախշը դատարկ է, ինչը նշանակում է, որ գործողությունը կկիրառվի ֆայլի յուրաքանչյուր տողի վրա: Գործողությունը բաղկացած է for օղակից, որը կրկնվում է տողի յուրաքանչյուր դաշտի (սյունակի) վրա՝ օգտագործելով NF (դաշտերի քանակ) փոփոխականը: Շրջանակի ներսում printf ֆունկցիան օգտագործվում է յուրաքանչյուր դաշտը տպելու համար, որին հաջորդում է բացատ: Հանգույցից հետո printf ֆունկցիան կրկին օգտագործվում է նոր տող նիշ տպելու համար:

Այս ծրագիրը գործարկելու համար մենք կարող ենք օգտագործել հետևյալ հրամանը −

$ awk -F, -f program.awk input.txt

Այնտեղ, որտեղ «program.awk»-ը AWK ծրագրի ֆայլի անունն է, իսկ «-F»-ը նշում է, որ դաշտի բաժանիչը ստորակետ է:

Soumen,25
Bob,30
Papan,22
Aditya,40
Joy,35

Մենք կարող ենք տեսնել, որ այն տպում է բոլոր տողերը «input.txt» ֆայլից:

Եզրակացություն

Այս հոդվածը ներկայացնում է AWK ծրագրավորման լեզուն Linux-ում՝ առաջարկելով գործնական կոդի օրինակներ և դրանց համապատասխան ելքը: AWK-ն բարձր արդյունավետ գործիք է տեքստային տվյալների մշակման և դրանցից համապատասխան տեղեկատվություն հանելու համար: Ուղեցույցն ընդգրկում է AWK-ի հիմնական ծրագրավորման հայեցակարգերը, ներառյալ օղակները: Այս գիտելիքներով մենք կհագեցնենք Linux-ում մեր սեփական AWK ծրագրերը ստեղծելու համար: