Si të lejohet Awk të përdorë variablat Shell - Pjesa 11
Kur shkruajmë skriptet shell, ne zakonisht përfshijmë programe ose komanda të tjera më të vogla si operacionet Awk në skriptet tona. Në rastin e Awk, ne duhet të gjejmë mënyra për të kaluar disa vlera nga shell në operacionet Awk.
Kjo mund të bëhet duke përdorur variabla shell brenda komandave Awk, dhe në këtë pjesë të serisë, ne do të mësojmë se si ta lejojmë Awk të përdorë variabla shell që mund të përmbajnë vlera që duam t'u kalojmë komandave Awk.
Ka ndoshta dy mënyra që mund të aktivizoni Awk që të përdorë variablat shell:
1. Përdorimi i Kuotimit të Shell
Le t'i hedhim një vështrim një shembulli për të ilustruar se si mund të përdorni në të vërtetë citimin e guaskës për të zëvendësuar vlerën e një ndryshoreje shell në një komandë Awk. Në këtë shembull, ne duam të kërkojmë një emër përdoruesi në skedarin /etc/passwd, të filtrojmë dhe printojmë informacionin e llogarisë së përdoruesit.
Prandaj, ne mund të shkruajmë një skript test.sh
me përmbajtjen e mëposhtme:
#!/bin/bash
#read user input
read -p "Please enter username:" username
#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'
Pas kësaj, ruani skedarin dhe dilni.
Interpretimi i komandës Awk në skriptin test.sh
më sipër:
cat /etc/passwd | awk "/$username/ "' { print $0 }'
\/$username/ \
– citimi i guaskës përdoret për të zëvendësuar vlerën e emrit të përdoruesit të ndryshores së guaskës në komandën Awk. Vlera e emrit të përdoruesit është modeli që do të kërkohet në skedarin /etc/passwd.
Vini re se thonjëza e dyfishtë është jashtë skriptit Awk, ‘{ print $0 }’
.
Pastaj bëni skriptin të ekzekutueshëm dhe ekzekutoni atë si më poshtë:
$ chmod +x test.sh
$ ./text.sh
Pas ekzekutimit të skriptit, do t'ju kërkohet të vendosni një emër përdoruesi, të shkruani një emër përdoruesi të vlefshëm dhe të shtypni Enter. Ju do të shihni detajet e llogarisë së përdoruesit nga skedari /etc/passwd si më poshtë:
2. Përdorimi i Awk's Variable Assignment
Kjo metodë është shumë më e thjeshtë dhe më e mirë në krahasim me metodën e parë. Duke marrë parasysh shembullin e mësipërm, ne mund të ekzekutojmë një komandë të thjeshtë për të kryer punën. Sipas kësaj metode, ne përdorim opsionin -v
për të caktuar një variabël shell në një ndryshore Awk.
Së pari, krijoni një variabël shell, username
dhe caktoni emrin që duam të kërkojmë në skedarin /etc/passswd
:
username="aaronkilik"
Pastaj shkruani komandën më poshtë dhe shtypni Enter:
# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'
Shpjegimi i komandës së mësipërme:
-v
– Opsioni Awk për të deklaruar një variabëlemri i përdoruesit
– është variabli i guaskësemri
– është ndryshorja Awk
Le t'i hedhim një vështrim të kujdesshëm $0 ~ name
brenda skriptit Awk, $0 ~ emri {print $0}
. Mbani mend, kur mbuluam operatorët e krahasimit Awk në Pjesën 4 të kësaj serie, një nga operatorët e krahasimit ishte modeli i vlerës ~
, që do të thotë: e vërtetë nëse vlera përputhet me modelin.
output($0)
e komandës cat e dërguar në Awk përputhet me modelin (aaronkilik)
që është emri që po kërkojmë në /etc/passwd, si rezultat, Operacioni i krahasimit është i vërtetë. Rreshti që përmban informacionin e llogarisë së përdoruesit më pas shtypet në ekran.
konkluzioni
Ne kemi mbuluar një pjesë të rëndësishme të veçorive të Awk, që mund të na ndihmojnë të përdorim variablat e guaskës brenda komandave Awk. Shumë herë, ju do të shkruani programe të vogla Awk ose komanda brenda skripteve shell dhe për këtë arsye, ju duhet të keni një kuptim të qartë se si të përdorni variablat shell brenda komandave Awk.
Në pjesën tjetër të serisë Awk, ne do të zhytemi në një seksion tjetër kritik të veçorive të Awk, që janë deklaratat e kontrollit të rrjedhës. Pra, qëndroni të sintonizuar dhe le të vazhdojmë të mësojmë dhe të ndajmë.