Օգտագործելով If Else հայտարարությունները Awk-ում


Սովորեք օգտագործել պայմանական հայտարարություններ AWK-ում: If else-ի օգտագործմամբ դուք կարող եք գրել առաջադեմ AWK սցենարներ:

AWK-ն հզոր սցենարային լեզու է, որը թխվում է bash shell-ի մեջ:

Այն չափազանց բազմակողմանի է և կարող է օգտագործվել տվյալների արդյունահանման բոլոր տեսակի սցենարներ գրելու համար:

Պայմանական հայտարարությունները ցանկացած ծրագրավորման կամ սկրիպտային լեզվի անբաժանելի մասն են, և AWK-ն ոչնչով չի տարբերվում:

Այս ձեռնարկում ես ցույց կտամ AWK-ում if-else հայտարարությունների օգտագործման օրինակներ: Ահա օրինակելի տվյալները, որոնց վրա ես հիմնում եմ իմ օրինակները:

ID Name Age Subject
111 Farhaan 18 DevOps
89 Alex 21 SecOps
92 Ronn 22 IT
100 Robert 23 Commerce
102 Samantha 20 Cloud-Admin
105 Bob 21 Maths

Ես այն պահում եմ students.txt-ում: Դուք կարող եք ներբեռնել այն, եթե ցանկանում եք ինքնուրույն փորձել օրինակները:

1. Եթե հայտարարությունը Awk-ում

Եթե հայտարարությունը ստուգում է պայմանի ճշմարիտ կամ կեղծ լինելը: Եթե պայմանը ճշմարիտ է, ապա այն կատարում է հայտարարությունները:

Ահա awk-ում if դրույթի պարզ շարահյուսություն.

awk '{if (condition) {statement} }' [input_file]

Այժմ եկեք օգտագործենք Student.txt ֆայլի մեր նմուշի տվյալները և տպենք ID 100-ով ուսանողի տվյալները՝ օգտագործելով if պայմանը AWK-ում:

awk '{                                        

if ($1=="100")

  {
    print "............... \n";
    print "Name : " ,$2;
    print "Age : ",$3;
    print "Department : " ,$4;
  }
  
}' students.txt

Ահա վերը նշված awk հրամանի կատարումը.

Ամբողջ վերը նշված հրամանը կարող է գրվել նաև մեկ նախադասությամբ, այսպես.

awk '{ if ($1=="100")  { print "............... \n"; print "Name : " ,$2; print "Age : ",$3; print "Department : " ,$4; } }' students.txt

Բայց առաջինն ավելի հեշտ է կարդալ և հասկանալ:

2. If else հայտարարությունը Awk-ում

Նախորդ օրինակում կար միայն մեկ պայման և մեկ գործողություն. if else հայտարարությունը փոքր-ինչ տարբերվում է if հայտարարությունից:

awk-ում if else հայտարարության ընդհանուր ձևաչափը հետևյալն է.

awk '{
  if (condition) 
    {command1} 
  else 
    {command2}
}' [input_file]

Այստեղ, եթե պայմանը true է, ապա կկատարվի command1, իսկ եթե պայմանը false է, ապա կկատարվի command2 այլ մասից։

Եկեք նորից վերցնենք student.txt տվյալների ֆայլը:

Ենթադրենք, դուք ցանկանում եք ստանալ բոլոր ուսանողի անունը և նրանց բաժինը, որի տարիքը 20 տարուց պակաս կամ հավասար է:

AWK հրամանը կարող է այսպիսին լինել.

awk '{

if ($3<20)
  {
    print "Student "$2,"of department", $4, "is less than 20 years old"
  } 
else
  {
    print "Student "$2,"of department", $4, "is more than 20 years old"
  }

Ահա if else օրինակի կատարումը և ելքը.

Ինչպես տեսնում եք, 20 տարեկանից փոքր ընդամենը երկու ուսանող կա։ Մնացած ուսանողները ավելի քան 20 տարեկան են։

Բայց վերը նշված օրինակում խնդիր կա. Այն նաև աղյուսակի նկարագրությունը համարում է իրական տվյալներ և մեզ ասում է, որ Աշակերտի տարիքային անունն ավելի քան 20 տարեկան է:

Եկեք սա շտկենք «եթե ուրիշ-եթե» հայտարարությամբ:

3. If else-if հայտարարությունը Awk-ում

if else if հայտարարություններով awk հրամանը ստուգում է մի քանի պայմանների առկայությունը:

Եթե առաջին պայմանը կեղծ է, ապա այն ստուգում է երկրորդ պայմանը: Եթե երկրորդ պայմանը նույնպես կեղծ է, ապա այն ստուգում է երրորդ պայմանը և այլն: Այն ստուգում է բոլոր պայմանները, մինչև պայմաններից մեկը ճիշտ լինի: Եթե ոչ մի պայման չի բավարարվում, ապա մյուս մասը կատարվում է:

if(condition1){

command1

}

else if(condition2) {

command2

}

else if(condition3) {

command3

}

.

.

.

else{

commandN

}

Նախորդ օրինակում ելքը հաշվի է առել նաև տվյալների առաջին տողը, որը պարզապես նկարագրությունն է:

Պայման դնենք, որ ստուգենք՝ տարիքը թիվ է, թե ոչ։ Ես օգտագործում եմ regex /[0-9]+$/, որը նշանակում է թվային արժեքներ: The ~ means փաստարկը թիվ ունի. Իսկ դրանցից առաջ ժխտման օպերատորը նշանակում է, որ դաշտը չպետք է ունենա թիվ։

awk '{

if (! ($3 ~ /[0-9]+$/))
  {
    print "Age is just a number but you do not have a number"
  } 
else if ($3<20)
  {
    print "Student "$2,"of department", $4, "is less than 20 years old"
  } 
else
  {
    print "Student "$2,"of department", $4, "is more than 20 years old"
  }

}' students.txt

Եկեք գործարկենք այն և կենտրոնանանք արդյունքի առաջին տողի վրա:

Բոնուսային հուշում. Օգտագործեք awk ծրագրի ֆայլը

Եթե դուք գտնում եք, որ տերմինալում երկար awk ծրագրեր գրելը ուղղակիորեն անհանգստացնում է, օգտագործեք awk ֆայլերը:

Ստեղծեք նոր ֆայլ և անվանեք այն օրինակ.awk կամ որևէ բան, որը ցանկանում եք: Ընդլայնումը այստեղ նշանակություն չունի: Դա պարզապես հեշտացնում է հասկանալ, որ ֆայլը awk ծրագրի ֆայլ է:

Դուք բովանդակությունը դնում եք ''-ի միջև, որը գալիս է վերը նշված օրինակներում awk-ից անմիջապես հետո:

{
if (! ($3 ~ /[0-9]+$/))
  {
    print "Age is just a number but you do not have a number"
  } 
else if ($3<20)
  {
    print "Student "$2,"of department", $4, "is less than 20 years old"
  } 
else
  {
    print "Student "$2,"of department", $4, "is more than 20 years old"
  }
  
}

Այժմ օգտագործեք այս awk ֆայլը հետևյալ կերպ.

awk -f example.awk students.txt

Այն կստեղծի նույն արդյունքը, որը դուք տեսել եք նախկինում:

Լրացուցիչ բոնուսային խորհուրդ. փոխարենը օգտագործեք եռակի օպերատորը

awk-ում if else հայտարարությունների օգտագործման փոխարեն կարող եք նաև օգտագործել եռակի օպերատորը: Երրորդական արտահայտությունները Awk-ի if-else հայտարարության սղագրված տարբերակն են:

Եթե պայմանը ճշմարիտ է, ապա հրամանը 1 կկատարվի; հակառակ դեպքում, եթե պայմանը false է, ապա հրամանը 2 է կատարվում:

(condition) ? Command1:Command2

Դիտարկենք awk հրամանի հետևյալ օրինակը.

awk '{print ($3 <=20)? "Age less than 20: " $2: "Age over 20: " $2}' students.txt

Այս օրինակում $3 վերաբերում է Տարիքը դաշտին: Եթե տարիքը փոքր է կամ հավասար է 20-ին, ապա այն կտպագրի առաջին հրամանը, որը ցույց է տալիս «Տարիքը 20-ից փոքր է»: Եթե առաջին մասը False է, ապա այն կկատարի երկրորդ հրամանը՝ «Age is over 20»:

abhishek@LHB:~$ awk '{print ($3 <=20)? "Age less than 20: " $2: "Age over 20: " $2}' students.txt
Age over 20: Name
Age less than 20: Farhaan
Age over 20: Alex
Age over 20: Ronn
Age over 20: Robert
Age less than 20: Samantha
Age over 20: Bob

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

Այս ուղեցույցում դուք սովորեցիք AWK ծրագրավորման լեզվով if-else հայտարարությունների օգտագործման տարբեր եղանակներ: Օգտագործելով այս հայտարարությունները, դուք կարող եք վերահսկել ծրագրի հոսքը, գնահատել պայմանը, ֆայլից տվյալներ հանել և այլն:

Եթե ձեզ ևս մի քանի օրինակ է անհրաժեշտ, այս հոդվածը կօգնի ձեզ: