Kā atļaut Awk izmantot čaulas mainīgos - 11. daļa


Rakstot čaulas skriptus, mēs parasti savos skriptos iekļaujam citas mazākas programmas vai komandas, piemēram, Awk operācijas. Awk gadījumā mums ir jāatrod veidi, kā dažas vērtības no čaumalas nodot Awk operācijām.

To var izdarīt, izmantojot Awk komandu čaulas mainīgos, un šajā sērijas daļā mēs uzzināsim, kā ļaut Awk izmantot čaulas mainīgos, kas var saturēt vērtības, kuras mēs vēlamies nodot Awk komandām.

Iespējams, divos veidos varat iespējot Awk izmantot čaulas mainīgos:

1. Shell Quoting izmantošana

Apskatīsim piemēru, lai ilustrētu, kā jūs faktiski varat izmantot čaulas citēšanu, lai aizstātu čaulas mainīgā vērtību Awk komandā. Šajā piemērā mēs vēlamies meklēt lietotājvārdu failā/etc/passwd, filtrēt un izdrukāt lietotāja konta informāciju.

Tāpēc mēs varam uzrakstīt skriptu test.sh ar šādu saturu:

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

Pēc tam saglabājiet failu un izejiet.

Awk komandas interpretācija augstāk esošajā skriptā test.sh :

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

"/ $username /" - čaulas citēšana, ko izmanto, lai aizstātu čaulas mainīgā lietotājvārda vērtību Awk komandā. Lietotājvārda vērtība ir modelis, kas jāmeklē failā/etc/passwd.

Ņemiet vērā, ka dubultā pēdiņa atrodas ārpus Awk skripta ‘{print $0}’ .

Pēc tam izveidojiet skriptu izpildāmu un palaidiet to šādi:

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

Pēc skripta palaišanas jums tiks piedāvāts ievadīt lietotājvārdu, ierakstīt derīgu lietotājvārdu un nospiediet taustiņu Enter. Lietotāja konta informāciju no faila/etc/passwd apskatīsit šādi:

2. Awk’s Variable Assignment izmantošana

Šī metode ir daudz vienkāršāka un labāka salīdzinājumā ar iepriekš minēto metodi. Ņemot vērā iepriekš minēto piemēru, mēs varam izpildīt vienkāršu komandu, lai paveiktu darbu. Saskaņā ar šo metodi mēs izmantojam opciju -v , lai Awk mainīgajam piešķirtu čaulas mainīgo.

Pirmkārt, izveidojiet čaulas mainīgo lietotājvārds un piešķiriet tam nosaukumu, kuru vēlamies meklēt failā /etc/passswd :

username="aaronkilik"

Pēc tam ierakstiet zemāk esošo komandu un nospiediet Enter:

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

Iepriekš minētās komandas skaidrojums:

  1. -v - opcija mainīgā deklarēšanai
  2. lietotājvārds - ir čaulas mainīgais
  3. name - ir mainīgais Awk

Apskatīsim uzmanīgi $0 ~ name Awk skripta iekšpusē, $0 ~ name {print $0} . Atcerieties, kad šīs sērijas 4. daļā mēs apskatījām Awk salīdzināšanas operatorus, viens no salīdzināšanas operatoriem bija vērtības ~ modelis, kas nozīmē: true, ja vērtība atbilst modelim.

Kaķu komandas output ($0) , kas tiek nosūtīta uz Awk, atbilst paraugam (aaronkilik) , kas ir nosaukums, kuru meklējam mapē/etc/passwd, kā rezultātā salīdzināšanas operācija ir patiesa. Pēc tam ekrānā tiek drukāta rinda, kurā ir informācija par lietotāja kontu.

Secinājums

Mēs esam apskatījuši svarīgu Awk funkciju sadaļu, kas var palīdzēt mums izmantot čaulas mainīgos Awk komandās. Daudzas reizes jūs rakstīsit mazas Awk programmas vai komandas čaulas skriptos, tāpēc jums ir skaidri jāsaprot, kā Awk komandās izmantot čaulas mainīgos.

Nākamajā Awk sērijas daļā mēs iegremdēsimies vēl vienā kritiskā Awk funkciju sadaļā, tas ir, plūsmas kontroles paziņojumos. Tāpēc sekojiet līdzi un turpināsim mācīties un dalīties.