Când scriem script-uri shell, în mod normal includem alte programe sau comenzi mai mici, cum ar fi Awk operațiuni în scripturile noastre. În cazul Awk, trebuie să găsim modalități de a transmite unele valori de la shell la operațiile Awk.
Acest lucru se poate face folosind variabile shell în comenzile Awk, iar în această parte a seriei, noi va învăța cum să permitem Awk să utilizeze variabile shell care pot conține valori pe care dorim să le transmitem lui Awk comenzi.
Există două modalități prin care puteți activa Awk să utilizeze variabile shell:
Să aruncăm o privire la un exemplu pentru a ilustra modul în care puteți utiliza efectiv cotația shell pentru a înlocui valoarea unei variabile shell într-o comandă Awk. În acest exemplu, dorim să căutăm un nume de utilizator în dosar /etc/passwd, filtrați și tipăriți informațiile despre contul utilizatorului.
Prin urmare, putem scrie un test.sh
script cu următorul conținut:
#! / bin / bash #citește intrarea utilizatorului. citiți -p "Vă rugăm să introduceți numele de utilizator:" username #search for username in / etc / passwd file and print details on the screen. cat / etc / passwd | awk "/ $ username /" '{print $ 0}'
Apoi, salvați fișierul și ieșiți.
Interpretarea comenzii Awk în test.sh
script de mai sus:
cat / etc / passwd | awk "/ $ username /" '{print $ 0}'
„/ $ nume de utilizator /”
- cotarea shell utilizată pentru a înlocui valoarea variabilei shell nume de utilizator în comanda Awk. Valoarea a nume de utilizator este modelul care trebuie căutat în fișier /etc/passwd.
Rețineți că citatul dublu se află în afara scriptului Awk, „{Print $ 0}”
.
Apoi faceți scriptul executabil și rulați-l după cum urmează:
$ chmod + x test.sh. $ ./text.sh
După rularea scriptului, vi se va solicita să introduceți un nume de utilizator, tastați un valid nume de utilizator și a lovit introduce. Veți vedea detaliile contului utilizatorului din /etc/passwd fișier după cum urmează:
Această metodă este mult mai simplă și mai bună în comparație cu prima metodă de mai sus. Având în vedere exemplul de mai sus, putem executa o comandă simplă pentru a realiza sarcina. În cadrul acestei metode, folosim -v
opțiune pentru a atribui o variabilă shell unei variabile Awk.
În primul rând, creați o variabilă shell, nume de utilizator
și atribuiți-i numele pe care dorim să îl căutăm în /etc/passswd
fişier:
username = "aaronkilik"
Apoi tastați comanda de mai jos și apăsați Enter:
# cat / etc / passwd | awk -v name = "$ username" '$ 0 ~ name {print $ 0}'
Explicația comenzii de mai sus:
-v
- Opțiunea Awk pentru a declara o variabilănume de utilizator
- este variabila shellNume
- este variabila AwkSă aruncăm o privire atentă $ 0 ~ nume
în scriptul Awk, '$ 0 ~ nume {print $ 0}'
. Amintiți-vă, când am acoperit Operatori de comparație awk în partea 4 din această serie, unul dintre operatorii de comparație a fost valoarea ~
model, ceea ce înseamnă: adevărat dacă valoarea se potrivește cu modelul.
ieșire (0 USD)
de comandă pisică conectat la Awk se potrivește cu modelul (aaronkilik)
care este numele în care căutăm /etc/passwd, ca rezultat, operația de comparație este adevărată. Linia care conține informațiile contului utilizatorului este apoi tipărită pe ecran.
Am acoperit o secțiune importantă a funcțiilor Awk, care ne pot ajuta să folosim variabile shell în comenzile Awk. De multe ori, veți scrie mici programe Awk sau comenzi în scripturile shell și, prin urmare, trebuie să aveți o înțelegere clară a modului de utilizare a variabilelor shell în comenzile Awk.
În următoarea parte a seriei Awk, ne vom scufunda într-o altă secțiune critică a caracteristicilor Awk, adică declarațiile de control al fluxului. Așadar, rămâneți atenți și să continuăm să învățăm și să împărtășim.