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:
FILENAME
: Name der aktuellen Eingabedatei (Variablennamen nicht ändern)FR
: Nummer der aktuellen Eingabezeile (d. h. Eingabezeile 1, 2, 3 usw., Variablennamen nicht ändern)NF
: Anzahl der Felder in der aktuellen Eingabezeile (Variablennamen nicht ändern)OFS
: AusgabefeldtrennzeichenFS
: Trennzeichen für EingabefelderORS
: Trennzeichen für AusgabedatensätzeRS
: 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:
- Eine Methode besteht darin, die integrierte Variable FS zu verwenden
- 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.