Օգտագործելով 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
հայտարարությունների օգտագործման տարբեր եղանակներ: Օգտագործելով այս հայտարարությունները, դուք կարող եք վերահսկել ծրագրի հոսքը, գնահատել պայմանը, ֆայլից տվյալներ հանել և այլն:
Եթե ձեզ ևս մի քանի օրինակ է անհրաժեշտ, այս հոդվածը կօգնի ձեզ: