Website-Suche

Wie man Shell-Variablen in awk-Befehlen verwendet - Teil 11


Wenn wir Shell-Skripte schreiben, nehmen wir normalerweise andere kleinere Programme oder Befehle wie Awk-Operationen in unsere Skripte auf. Im Fall von Awk müssen wir Wege finden, einige Werte von der Shell an Awk-Operationen zu übergeben.

Dies kann durch die Verwendung von Shell-Variablen in Awk-Befehlen erreicht werden, und in diesem Teil der Serie werden wir lernen, wie wir Awk erlauben können, Shell-Variablen zu verwenden, die Werte enthalten können, die wir an Awk-Befehle übergeben möchten.

Es gibt zwei Möglichkeiten, wie Sie Awk für die Verwendung von Shell-Variablen aktivieren können:

1. Verwendung von Shell-Anführungszeichen

Werfen wir einen Blick auf ein Beispiel, um zu veranschaulichen, wie Sie tatsächlich Shell-Anführungszeichen verwenden können, um den Wert einer Shell-Variablen in einem Awk-Befehl zu ersetzen.

In diesem Beispiel möchten wir in der Datei /etc/passwd nach einem Benutzernamen suchen, die Kontoinformationen des Benutzers filtern und ausgeben.

Daher können wir ein test.sh Skript mit folgendem Inhalt schreiben:

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

Speichern Sie danach die Datei und beenden Sie den Vorgang.

Interpretation des Awk-Befehls im obigen test.sh-Skript:

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

"/$username/ " – Shell-Anführungszeichen werden verwendet, um den Wert der Shell-Variablen username im Awk-Befehl zu ersetzen. Der Wert des Benutzernamens ist das Muster, das in der Datei /etc/passwd gesucht werden soll.

Beachten Sie, dass sich das doppelte Anführungszeichen außerhalb des Awk-Skripts '{ print $0 }' befindet.

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

chmod  +x  test.sh
./text.sh 

Nachdem Sie das Skript ausgeführt haben, werden Sie aufgefordert, einen Benutzernamen einzugeben, einen gültigen Benutzernamen einzugeben und die Eingabetaste zu drücken. Sie sehen die Kontodetails des Benutzers aus der Datei /etc/passwd wie folgt:

2. Verwenden der Variablenzuweisung von awk

Diese Methode ist einfacher und besser als die erste Methode. In Anbetracht des obigen Beispiels können wir einen einfachen Befehl ausführen, um die Aufgabe zu erledigen. Bei dieser Methode verwenden wir die Option -v, um einer Awk-Variablen eine Shell-Variable zuzuweisen.

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

username="aaronkilik"

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

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

Erklärung des obigen Befehls:

  • -v – Awk-Option zum Deklarieren einer Variablen
  • username – ist die Shell-Variable
  • name – ist die Awk-Variable

Werfen wir einen genauen Blick auf $0 ~ name im Awk-Skript, ' $0 ~ name {print $0}'. Denken Sie daran, als wir die Awk-Vergleichsoperatoren in Teil 4 dieser Serie behandelt haben, war einer der Vergleichsoperatoren value ~ pattern, was bedeutet: true, wenn der Wert mit dem Muster übereinstimmt.

Die Ausgabe ($0) des cat-Befehls, der an Awk weitergeleitet wird, entspricht dem Muster (aaronkilik), dem Namen, den wir in /etc/passwd suchen, als Ergebnis ist die Vergleichsoperation wahr. Die Zeile mit den Kontoinformationen des Benutzers wird dann auf dem Bildschirm gedruckt.

Schlussfolgerung

Wir haben einen wichtigen Abschnitt der Awk-Funktionen behandelt, die uns helfen können, Shell-Variablen in Awk-Befehlen zu verwenden. Oft schreiben Sie kleine Awk-Programme oder Befehle in Shell-Skripten und müssen daher ein klares Verständnis dafür haben, wie Sie Shell-Variablen in Awk-Befehlen verwenden.

Im nächsten Teil der Awk-Serie werden wir uns mit einem weiteren kritischen Abschnitt der Awk-Funktionen befassen, nämlich Flusssteuerungsanweisungen. Bleiben Sie also dran und lassen Sie uns weiter lernen und teilen.

Für diejenigen, die eine umfassende Ressource suchen, haben wir alle Artikel der Awk-Serie in einem Buch zusammengestellt, das 13 Kapitel umfasst und sich über 41 Seiten erstreckt und sowohl die grundlegende als auch die fortgeschrittene Verwendung von Awk mit praktischen Beispielen abdeckt.

ProduktnamePreisKaufen
E-Book: Einführung in den AWK-Leitfaden für Anfänger8,99 $[Jetzt kaufen]

Verwandte Artikel: