Kako dopustiti Awku da koristi varijable ljuske - 11. dio


Kada pišemo ljuske skripte, u naše skripte obično uključujemo druge manje programe ili naredbe, poput Awk operacija. U slučaju Awk, moramo pronaći načine za prosljeđivanje nekih vrijednosti iz ljuske operacijama Awk.

To se može učiniti korištenjem varijabli ljuske unutar naredbi Awk, a u ovom dijelu serije naučit ćemo kako omogućiti Awk upotrebu varijabli ljuske koje mogu sadržavati vrijednosti koje želimo proslijediti naredbama Awk.

Postoje dva načina na koja možete omogućiti Awk da koristi varijable ljuske:

1. Korištenje Shell Citiranja

Pogledajmo primjer kako bismo ilustrirali kako zapravo možete koristiti citiranje ljuske da biste zamijenili vrijednost varijable ljuske u naredbi Awk. U ovom primjeru želimo potražiti korisničko ime u datoteci/etc/passwd, filtrirati i ispisati podatke o korisničkom računu.

Stoga možemo napisati skriptu test.sh sa sljedećim sadržajem:

#!/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 }'

Nakon toga spremite datoteku i izađite.

Tumačenje naredbe Awk u gornjoj skripti test.sh :

cat /etc/passwd | awk "/$username/ "' { print $0 }'

"/ $username /" - citiranje ljuske koje se koristi za zamjenu vrijednosti korisničkog imena varijable u naredbi Awk. Vrijednost korisničkog imena je obrazac koji se traži u datoteci/etc/passwd.

Imajte na umu da je dvostruki navodnik izvan skripte Awk, ‘{print $0}’ .

Zatim napravite skriptu izvršnom i pokrenite je na sljedeći način:

$ chmod  +x  test.sh
$ ./text.sh 

Nakon pokretanja skripte, od vas će se zatražiti da unesete korisničko ime, upišite važeće korisničko ime i pritisnite Enter. Pojedinosti korisničkog računa vidjet ćete iz datoteke/etc/passwd kako je prikazano u nastavku:

2. Korištenje Awkove dodjele varijabli

Ova je metoda mnogo jednostavnija i bolja u usporedbi s gornjom. Uzimajući u obzir gornji primjer, za izvršavanje posla možemo pokrenuti jednostavnu naredbu. Prema ovoj metodi, koristimo opciju -v za dodjeljivanje varijable ljuske varijabli Awk.

Prvo stvorite varijablu ljuske, username i dodijelite joj ime koje želimo pretraživati u datoteci /etc/passswd :

username="aaronkilik"

Zatim upišite naredbu ispod i pritisnite Enter:

# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

Objašnjenje gornje naredbe:

  1. -v - Awk opcija za deklariranje varijable
  2. korisničko ime - je varijabla ljuske
  3. name - je Awk varijabla

Pogledajmo pažljivo $0 ~ name unutar skripte Awk, $0 ~ name {print $0} . Zapamtite, kada smo obrađivali operatore usporedbe Awk u 4. dijelu ove serije, jedan od operatora usporedbe bio je value ~ pattern, što znači: true ako vrijednost odgovara uzorku.

Izlaz ($0) mačke naredbe preusmjerene na Awk podudara se s uzorkom (aaronkilik) što je ime koje tražimo u/etc/passwd, kao rezultat, operacija usporedbe je istinita. Redak koji sadrži podatke o korisničkom računu ispisuje se na ekranu.

Zaključak

Obuhvatili smo važan odjeljak značajki Awk, koji nam mogu pomoći u korištenju varijabli ljuske unutar naredbi Awk. Mnogo puta ćete unutar skripti ljuske pisati male programe ili naredbe Awk i zato morate imati jasno razumijevanje kako koristiti varijable ljuske unutar naredbi Awk.

U sljedećem dijelu serije Awk zaronit ćemo u još jedan kritični dio Awk značajki, a to su izjave o kontroli protoka. Zato budite u toku i nastavimo učiti i dijeliti.