Wéi erlaabt Awk Shell Variablen ze benotzen - Deel 11


Wa mir Shell Scripte schreiwen, enthalen mir normalerweis aner méi kleng Programmer oder Kommandoen wéi Awk Operatiounen an eise Scripten. Am Fall vun Awk musse mir Weeër fannen fir e puer Wäerter vun der Shell op Awk Operatiounen weiderzebréngen.

Dëst kann gemaach ginn andeems Dir Shell Variablen bannent Awk Kommandoen benotzt, an an dësem Deel vun der Serie léiere mir wéi Awk erlaabt Shell Variablen ze benotzen déi Wäerter enthalen déi mir un Awk Kommandoen weiderginn wëllen.

Et méiglecherweis zwee Weeër wéi Dir Awk aktivéiere kënnt fir Shellvariablen ze benotzen:

1. Benotzt Shell Zitat

Loosst eis e Beispill kucken fir ze illustréieren wéi Dir tatsächlech Shellzitéiere benotze kënnt fir de Wäert vun enger Shell Variabel an engem Awk Kommando ze ersetzen. An dësem Beispill wëlle mir no engem Benotzernumm an der Datei /etc/passwd sichen, d'Kontoinformatioun vum Benotzer filteren an drécken.

Dofir kënne mir e test.sh Skript mat dem folgenden Inhalt schreiwen:

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

Duerno späichert d'Datei a gitt eraus.

Interpretatioun vum Awk Kommando am test.sh Skript uewendriwwer:

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

\/$Benotzernumm/ \ - Shell Zitat benotzt fir de Wäert vum Shell Variabel Benotzernumm am Awk Kommando z'ersetzen. De Wäert vum Benotzernumm ass d'Muster fir an der Datei /etc/passwd ze sichen.

Bedenkt datt den duebelen Zitat ausserhalb vum Awk Skript ass, ‘{ print $0 }’.

Dann maachen de Skript ausféierbar a lafen et wéi follegt:

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

Nodeems Dir de Skript ausgefouert hutt, gitt Dir opgefuerdert e Benotzernumm anzeginn, e gültege Benotzernumm aginn an dréckt Enter. Dir wäert d'Kontodetailer vum Benotzer aus der /etc/passwd Datei kucken wéi hei ënnen:

2. Benotzt Awk d'Variabel Aufgab

Dës Method ass vill méi einfach a besser am Verglach mat der éischter Method. Wann Dir d'Beispill hei uewen berücksichtegt, kënne mir en einfache Kommando ausféieren fir d'Aarbecht z'erreechen. Ënnert dëser Method benotze mir d'Optioun -v fir eng Shell Variabel zu enger Awk Variabel ze ginn.

Als éischt, erstellt eng Shell Variabel, Benotzernumm a gitt et den Numm un dee mir an der /etc/passswd Datei sichen wëllen:

username="aaronkilik"

Da gitt de Kommando hei ënnen a dréckt Enter:

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

Erklärung vum uewe genannte Kommando:

  1. -v - Awk Optioun fir eng Variabel ze deklaréieren
  2. Benotzernumm - ass d'Shell Variabel
  3. Numm – ass d'Awk Variabel

Loosst eis e virsiichteg kucken op $0 ~ Numm am Awk Skript, $0 ~ Numm {print $0}. Denkt drun, wa mir Awk Vergläichsbedreiwer am Deel 4 vun dëser Serie ofgedeckt hunn, war ee vun de Vergläichsbedreiwer Wäert ~ Muster, dat heescht: richteg wann de Wäert mam Muster entsprécht.

Den Output($0) vum cat-Kommando, deen op Awk gefouert gëtt, entsprécht dem Muster (aaronkilik) dat ass den Numm no deem mir an /etc/passwd sichen, als Resultat, de Verglach Operatioun ass richteg. D'Linn mat der Kontoinformatioun vum Benotzer gëtt dann um Écran gedréckt.

Conclusioun

Mir hunn eng wichteg Sektioun vun Awk Funktiounen ofgedeckt, déi eis hëllefe kënnen Shell Variablen bannent Awk Kommandoen ze benotzen. Vill Mol wäert Dir kleng Awk Programmer oder Kommandoen bannent Shell Scripten schreiwen an dofir musst Dir e kloert Verständnis hunn wéi Dir Shell Variablen bannent Awk Kommandoen benotzt.

Am nächsten Deel vun der Awk Serie wäerte mir an nach eng aner kritesch Sektioun vun Awk Features dauchen, dat ass Flow Kontroll Aussoen. Also bleift ofgeschloss a loosst eis weider léieren an deelen.