Wie wir den Abschnitt von. aufdecken Awk Features werden wir in diesem Teil der Serie durch das Konzept der integrierten Variablen in Awk gehen. Es gibt zwei Arten von Variablen, die Sie in Awk verwenden können, und zwar: benutzerdefinierte Variablen, die wir in. behandelt haben Teil 8 und eingebaut Variablen.
Eingebaut Variablen haben bereits definierte Werte in Awk, aber wir können diese Werte auch vorsichtig ändern. Zu den integrierten Variablen gehören:
DATEINAMEN
: Name der aktuellen Eingabedatei (Variablennamen nicht ändern)NS
: Nummer der aktuellen Eingabezeile (also Eingabezeile 1, 2, 3… usw., Variablennamen nicht ändern)NF
: Anzahl der Felder in der aktuellen Eingabezeile (Variablennamen nicht ändern)OFS
: AusgabefeldtrennzeichenFS
: Eingabefeld-TrennzeichenORS
: Datensatztrennzeichen ausgebenRS
: Datensatztrennzeichen eingebenLassen Sie uns fortfahren, um die Verwendung einiger der oben in Awk integrierten Variablen zu veranschaulichen:
Um den Dateinamen der aktuellen Eingabedatei zu lesen, können Sie die
DATEINAMEN
eingebaute Variable wie folgt:
$ awk ' { DATEINAME drucken } ' ~/domains.txt
Sie werden feststellen, dass der Dateiname für jede Eingabezeile ausgedruckt wird, das ist das Standardverhalten von Awk wenn du verwendest DATEINAMEN
eingebaute Variable.
Verwenden von NR
Um die Anzahl der Zeilen (Datensätze) in einer Eingabedatei zu zählen, denken Sie daran, dass sie auch die leeren Zeilen zählt, wie wir im Beispiel unten sehen werden.
Wenn wir die Datei anzeigen domains.txt mit Katzenbefehl, es beinhaltet 14 Zeilen mit Text und leer 2 Linien:
$ cat ~/domains.txt.
$ awk ' END { print "Anzahl der Datensätze in der Datei ist: ", 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,"hat",NF,"fields"; }' ~/names.txt.
Als nächstes können Sie auch ein Eingabefeld-Trennzeichen mit dem FS
eingebaute Variable, definiert wie Awk teilt Eingabezeilen in Felder auf.
Der Standardwert für FS
ist Raum und Tab, aber wir können den Wert von ändern FS
auf ein beliebiges Zeichen, das Awk anweist, die Eingabezeilen entsprechend aufzuteilen.
Dafür gibt es zwei Methoden:
Betrachten Sie die Datei /etc/passwd Auf einem Linux-System werden die Felder in dieser Datei mit dem :
Zeichen, sodass wir es als neues Eingabefeldtrennzeichen angeben können, wenn wir bestimmte Felder wie in den folgenden Beispielen herausfiltern möchten:
Wir können die nutzen -F
Möglichkeit wie folgt:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd.
Optional können wir auch die Vorteile des FS
eingebaute Variable wie folgt:
$ awk ' BEGIN { FS=“:”; } { $1, $4 drucken; } ' /etc/passwd.
Um ein Ausgabefeldtrennzeichen anzugeben, verwenden Sie das OFS
eingebaute Variable definiert, wie die Ausgabefelder mit dem von uns verwendeten Zeichen wie im folgenden Beispiel getrennt werden:
$ 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 ausgestattet sind. Wir können diese Werte jedoch auch ändern, es wird jedoch nicht empfohlen, dies zu tun, es sei denn, Sie wissen, was Sie tun, mit ausreichendem Verständnis.
Danach werden wir fortfahren, um zu behandeln, wie wir Shell-Variablen in Awk-Befehlsoperationen verwenden können. Bleiben Sie daher verbunden mit Tecmint.