Website-Suche

Erfahren Sie, wie Sie die integrierten Awk-Variablen verwenden – Teil 10


Während wir den Abschnitt der Awk-Funktionen entdecken, werden wir in diesem Teil der Serie das Konzept der integrierten Variablen in Awk durchgehen. Es gibt zwei Arten von Variablen, die Sie in Awk verwenden können: benutzerdefinierte Variablen, die wir in Teil 8 behandelt haben, und integrierte Variablen.

Eingebaute Variablen haben Werte, die bereits in Awk definiert sind. Wir können diese Werte jedoch auch sorgfältig ändern. Zu den integrierten Variablen gehören:

  1. FILENAME: Name der aktuellen Eingabedatei (Variablennamen nicht ändern)
  2. FR: Nummer der aktuellen Eingabezeile (d. h. Eingabezeile 1, 2, 3 usw., Variablennamen nicht ändern)
  3. NF: Anzahl der Felder in der aktuellen Eingabezeile (Variablennamen nicht ändern)
  4. OFS: Ausgabefeldtrennzeichen
  5. FS: Trennzeichen für Eingabefelder
  6. ORS: Trennzeichen für Ausgabedatensätze
  7. RS: Trennzeichen für Eingabedatensätze

Lassen Sie uns mit der Veranschaulichung der Verwendung einiger der oben genannten integrierten Awk-Variablen fortfahren:

Um den Dateinamen der aktuellen Eingabedatei zu lesen, können Sie die integrierte Variable FILENAME wie folgt verwenden:

awk ' { print FILENAME } ' ~/domains.txt 

Sie werden feststellen, dass der Dateiname für jede Eingabezeile ausgedruckt wird. Dies ist das Standardverhalten von Awk, wenn Sie die integrierte Variable FILENAME verwenden.

Wenn Sie NR verwenden, um die Anzahl der Zeilen (Datensätze) in einer Eingabedatei zu zählen, denken Sie daran, dass auch die leeren Zeilen gezählt werden, wie wir im folgenden Beispiel sehen werden.

Wenn wir die Datei domains.txt mit dem Befehl cat anzeigen, enthält sie 14 Zeilen mit Text und 2 leere Zeilen:

cat ~/domains.txt

awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

Um die Anzahl der Felder in einem Datensatz oder einer Zeile zu zählen, verwenden wir die integrierte Variable NR wie folgt:

cat ~/names.txt

awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

Als nächstes können Sie mithilfe der integrierten Variablen FS auch ein Eingabefeldtrennzeichen angeben. Es definiert, wie Awk Eingabezeilen in Felder unterteilt.

Der Standardwert für FS ist Leerzeichen und Tab, aber wir können den Wert von FS in jedes beliebige Zeichen ändern weist Awk an, die Eingabezeilen entsprechend aufzuteilen.

Hierfür gibt es zwei Methoden:

  1. Eine Methode besteht darin, die integrierte Variable FS zu verwenden
  2. und die zweite besteht darin, die Option -F Awk aufzurufen

Betrachten Sie die Datei /etc/passwd auf einem Linux-System. Die Felder in dieser Datei werden durch das Zeichen : getrennt, sodass wir es als neues Eingabefeldtrennzeichen angeben können, wenn Wir möchten bestimmte Felder herausfiltern, wie in den folgenden Beispielen:

Wir können die Option -F wie folgt verwenden:

awk -F':' '{ print $1, $4 ;}' /etc/passwd

Optional können wir auch die integrierte Variable FS wie folgt nutzen:

awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

Um ein Ausgabefeldtrennzeichen anzugeben, verwenden Sie die integrierte Variable OFS. Sie definiert, wie die Ausgabefelder mithilfe des Zeichens getrennt werden, das wir wie im folgenden Beispiel verwenden:

awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

In diesem Teil 10 haben wir die Idee untersucht, integrierte Awk-Variablen zu verwenden, die mit vordefinierten Werten geliefert werden. Wir können diese Werte aber auch ändern. Dies wird jedoch nicht empfohlen, es sei denn, Sie wissen, was Sie tun, und verfügen über ausreichende Kenntnisse.

Danach werden wir uns damit befassen, wie wir Shell-Variablen in Awk-Befehlsoperationen verwenden können und daher mit Tecmint in Verbindung bleiben.