So erlauben Sie awk zu erlauben, Shell -Variablen zu verwenden - Teil 11

So erlauben Sie awk zu erlauben, Shell -Variablen zu verwenden - Teil 11

Wenn wir Shell -Skripte schreiben, schließen wir normalerweise andere kleinere Programme oder Befehle wie z Awk Operationen in unseren Skripten. Im Falle von AWK müssen wir Wege finden, einige Werte von der Shell an awk zu übergeben.

Dies kann durch Verwendung von Shell -Variablen in awk -Befehlen erfolgen, und in diesem Teil der Serie werden wir lernen.

Es gibt möglicherweise zwei Möglichkeiten, wie Sie awk ermöglichen können, Shell -Variablen zu verwenden:

1. Verwenden von Shell -Zitat

Schauen wir uns ein Beispiel an, um zu veranschaulichen, wie Sie tatsächlich Shell -Zitat verwenden können, um den Wert einer Shell -Variablen in einem awk -Befehl zu ersetzen. In diesem Beispiel möchten wir nach einem suchen Nutzername in der Datei /etc/passwd, Filtern und drucken Sie die Kontoinformationen des Benutzers und drucken Sie sie.

Deshalb können wir a schreiben prüfen.Sch Skript mit dem folgenden Inhalt:

#!/bin/bash #Read Benutzereingabe lesen -p "Bitte geben Sie den Benutzernamen ein:" Benutzername #search für Benutzername in/etc/passwd -Datei und drucken Sie Details auf der Bildschirmkatze/etc/passwd | awk "/ $ userername/" 'print $ 0' 

Speichern Sie danach die Datei und beenden Sie.

Interpretation des awk -Befehls in der prüfen.Sch Skript oben:

Katze /etc /passwd | awk "/ $ userername/" 'print $ 0' 

"/ $ userername/" - Shell -Zitat verwendet, um den Wert der Shell -Variablen zu ersetzen Nutzername im Befehl awk. Der Wert von Nutzername Ist das Muster in der Datei durchsucht werden /etc/passwd.

Beachten Sie, dass sich das Doppelzitat außerhalb des awk -Skripts befindet, 'print $ 0'.

Machen Sie dann das Skript ausführbar und führen Sie es wie folgt aus:

$ chmod +x Test.Sh $ ./Text.Sch 

Nach dem Ausführen des Skripts werden Sie aufgefordert, a einzugeben Nutzername, Geben Sie eine gültige ein Nutzername und schlagen Eingeben. Sie werden die Kontodetails des Benutzers aus dem anzeigen /etc/passwd Datei wie unten:

Shell -Skript, um Benutzername in der Passwortdatei zu finden

2. Verwenden der variablen Zuordnung von awk

Diese Methode ist viel einfacher und besser im Vergleich zu Methode One oben. In Anbetracht des obigen Beispiels können wir einen einfachen Befehl ausführen, um den Job zu erledigen. Nach dieser Methode verwenden wir die -v Option zum Zuweisen einer Shell -Variablen für eine awk -Variable.

Erstellen Sie zunächst eine Shell -Variable, Nutzername und weisen Sie ihm den Namen zu, den wir in der suchen möchten /etc/passswd Datei:

Benutzername = "Aaronkilik" 

Geben Sie dann den Befehl unten ein und drücken Sie die Eingabetaste:

# CAT /ETC /PASSWD | awk -v name = "$ username" '$ 0 ~ name drucken $ 0' 
Suchen Sie den Benutzernamen in der Passwortdatei mit awk

Erläuterung des obigen Befehls:

  1. -v - Awk Option, um eine Variable zu deklarieren
  2. Nutzername - ist die Shell -Variable
  3. Name - ist die awk -Variable

Schauen wir uns sorgfältig an $ 0 ~ Name Innerhalb des awk -Skripts, '$ 0 ~ Name print $ 0'. Denken Sie daran, als wir die AWK -Vergleichsbetreiber in Teil 4 dieser Serie behandelten, war einer der Vergleichsbetreiber der Wert ~ Muster, was bedeutet: wahr, wenn der Wert dem Muster übereinstimmt.

Der Ausgabe ($ 0) von Cat -Befehl an awk übergeht dem Muster (Aaronkilik) In welchem ​​Namen, nach dem wir suchen /etc/passwd, Infolgedessen ist der Vergleichsvorgang wahr. Die Zeile, die die Kontoinformationen des Benutzers enthält, wird dann auf dem Bildschirm gedruckt.

Abschluss

Wir haben einen wichtigen Abschnitt der awk -Funktionen behandelt, mit dem wir Shell -Variablen in awk -Befehlen verwenden können. Oft schreiben Sie kleine AWK -Programme oder -befehle in Shell -Skripten und müssen daher ein klares Verständnis dafür haben, wie Shell -Variablen in awk -Befehlen verwendet werden können.

Im nächsten Teil der AWK -Serie werden wir in einen weiteren kritischen Abschnitt der awk. Bleiben Sie also auf Tunning und teilen wir weiter lernen und teilen.