Az Awk shell-változók használatának engedélyezése – 11. rész
Amikor shell szkripteket írunk, általában más kisebb programokat vagy parancsokat, például Awk műveleteket is beiktatunk a szkriptjeinkbe. Az Awk esetében meg kell találnunk a módját annak, hogy bizonyos értékeket átadjunk a shellből az Awk műveleteknek.
Ezt megtehetjük shell-változók használatával az Awk parancsokon belül, és a sorozat ezen részében megtudjuk, hogyan engedélyezhetjük az Awk számára, hogy olyan shell-változókat használjon, amelyek tartalmazhatnak olyan értékeket, amelyeket át szeretnénk adni az Awk parancsoknak.
Kétféleképpen engedélyezheti az Awk számára a shell-változók használatát:
1. Shell Qoting használata
Vessünk egy pillantást egy példára annak szemléltetésére, hogy valójában hogyan lehet shell-idézetet használni egy shell-változó értékének helyettesítésére egy Awk parancsban. Ebben a példában egy felhasználónevet szeretnénk keresni az /etc/passwd fájlban, szűrni és kinyomtatni a felhasználó fiókinformációit.
Ezért írhatunk egy test.sh
szkriptet a következő tartalommal:
#!/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 }'
Ezután mentse el a fájlt, és lépjen ki.
Az Awk parancs értelmezése a fenti test.sh
szkriptben:
cat /etc/passwd | awk "/$username/ "' { print $0 }'
"/$username/ "
– shell-idézőjel, amelyet a username shell-változó értékének helyettesítésére használnak az Awk parancsban. A felhasználónév értéke az /etc/passwd fájlban keresendő minta.
Vegye figyelembe, hogy a dupla idézőjel az Awk szkripten kívül található, a ‘{ print $0 }’
.
Ezután tegye futtathatóvá a szkriptet, és futtassa a következőképpen:
chmod +x test.sh
./text.sh
A szkript futtatása után a rendszer kéri, hogy írjon be egy felhasználónevet, írjon be egy érvényes felhasználónevet, majd nyomja meg az Enter billentyűt. Az alábbiak szerint tekintheti meg a felhasználói fiók adatait az /etc/passwd fájlból:
2. Az Awk változó hozzárendelésének használata
Ez a módszer sokkal egyszerűbb és jobb a fenti egyikhez képest. A fenti példát figyelembe véve egy egyszerű parancsot futtathatunk a feladat végrehajtásához. Ennél a metódusnál a -v
opciót használjuk, hogy shell-változót rendeljünk egy Awk-változóhoz.
Először hozzon létre egy shell változót, a username
-t, és rendelje hozzá azt a nevet, amelyet keresni akarunk az /etc/passswd
fájlban:
username="aaronkilik"
Ezután írja be az alábbi parancsot, és nyomja meg az Enter billentyűt:
cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'
A fenti parancs magyarázata:
-v
– Awk opció egy változó deklarálásáhozfelhasználónév
– a shell változónév
– az Awk változó
Nézzük meg alaposan a $0 ~ name
elemet az Awk szkriptben, a ' $0 ~ name {print $0}'
. Ne feledje, amikor ennek a sorozatnak a 4. részében foglalkoztunk az Awk összehasonlító operátorokkal, az egyik összehasonlító operátor a value ~
minta volt, ami azt jelenti: igaz, ha az érték megegyezik a mintával.
Az Awk-ba küldött cat parancs output($0)
értéke megegyezik az (aaronkilik)
mintával, amely az a név, amit keresünk az /etc/passwd fájlban. >, ennek eredményeként az összehasonlítási művelet igaz. A felhasználó fiókinformációit tartalmazó sor ezután megjelenik a képernyőn.
Következtetés
Lefedtük az Awk szolgáltatásainak egy fontos részét, amelyek segíthetnek a shell-változók használatában az Awk parancsokon belül. Sokszor kis Awk-programokat vagy parancsokat írunk a shell-szkriptekben, ezért világosan meg kell értenünk, hogyan kell használni a shell-változókat az Awk-parancsokon belül.
Az Awk-sorozat következő részében az Awk-szolgáltatások egy másik kritikus részébe, az áramlásvezérlési utasításokba merülünk bele. Maradjunk tehát előre, és folytassuk a tanulást és a megosztást.