Erfahren Sie, wie Sie awk eingebaute Variablen verwenden - Teil 10
- 4747
- 632
- Hr. Moritz Bozsik
Als wir den Abschnitt von entdecken Awk Merkmale in diesem Teil der Serie werden wir durch das Konzept der eingebauten Variablen in awk gehen. Es gibt zwei Arten von Variablen, die Sie in awk verwenden können benutzerdefinierte Variablen, die wir in Teil 8 und behandelt haben eingebaut Variablen.
Awk integrierte variablen BeispieleEingebaut Variablen haben bereits Werte definiert in Awk, Wir können diese Werte aber auch sorgfältig ändern, die integrierten Variablen umfassen:
DATEINAMEN
: Aktueller Eingabedatei Name (nicht den variablen Namen ändern)Fr
: Anzahl der aktuellen Eingangsleitung (dh Eingangsleitung 1, 2, 3… also ändern Sie den variablen Namen nicht)Nf
: Anzahl der Felder in der aktuellen Eingangsleitung (ändern Sie den variablen Namen nicht)Ofs
: AusgangsfeldabscheiderFs
: EingangsfeldabscheiderOrs
: AusgangsrekordabscheiderRs
: Eingabeteilscheider
Lassen Sie uns die Verwendung einiger der oben genannten AWK-integrierten Variablen veranschaulichen:
Um den Dateinamen der aktuellen Eingabedatei zu lesen, können Sie die verwenden DATEINAMEN
Eingebaute Variable wie folgt:
$ awk 'Print Dateiname' ~/Domains.txtAwk Dateiname Variable
Sie werden erkennen, dass der Dateiname für jede Eingabestellung ausgedruckt ist, das ist das Standardverhalten von Awk Wenn Sie verwenden DATEINAMEN
integrierte Variable.
Verwendung Nr
Um die Anzahl der Zeilen (Datensätze) in einer Eingabedatei zu zählen, denken Sie daran, dass es auch die leeren Zeilen zählt, wie wir im folgenden Beispiel sehen werden.
Wenn wir die Datei anzeigen Domänen.txt Verwenden des CAT -Befehls enthält es 14 Zeilen mit Text und leer 2 Linien:
$ cat ~/domains.txtDateiinhalte drucken
$ awk 'Ende print "Anzahl der Datensätze in der Datei ist:", nr' ~/Domains.txtAwk zählende Anzahl der Zeilen
Um die Anzahl der Felder in einem Datensatz oder einer Zeile zu zählen, verwenden wir die integrierte NR-integrierte Variable wie folgt:
$ cat ~/Namen.txtListendateiinhalte
$ awk 'print "record:", nr, "hat", nf, "fields"; '~/names.txtAwk Anzahl der Felder in der Datei zählen
Als nächstes können Sie auch einen Eingangsfeldabscheider mit dem angeben Fs
integrierte Variable definiert, wie Awk Teilen Sie Eingangsleitungen in Felder auf.
Der Standardwert für Fs
Ist Raum Und Tab, aber wir können den Wert von ändern Fs
zu jedem Charakter, der awk anweist, Eingangsleitungen entsprechend zu teilen.
Es gibt zwei Methoden, um dies zu tun:
- Eine Methode besteht darin, die zu verwenden Fs integrierte Variable
- und die zweite ist, die aufzurufen -F Awk Option
Betrachten Sie die Datei /etc/passwd Auf einem Linux -System werden die Felder in dieser Datei unter Verwendung des :
Das Zeichen, damit wir es als neues Eingangsfeldtrennzeichen angeben können, wenn wir bestimmte Felder wie in den folgenden Beispielen herausfiltern möchten:
Wir können die verwenden -F
Option wie folgt:
$ awk -f ': "print $ 1, $ 4;' /etc /passwdAwk Filterfelder in der Passwortdatei
Optional können wir auch die ausnutzen Fs
integrierte Variable wie unten:
$ awk 'begin fs = ":"; print $ 1, $ 4; ' /etc /passwdFilterfelder in der Datei mit awk
Verwenden Sie die Ausgangsfeldabscheider, um ein Ausgangsfeld -Trennzeichen anzugeben, die Ofs
Die integrierte Variable definiert, wie die Ausgangsfelder unter Verwendung des Zeichens, das wir verwenden, wie im folgenden Beispiel verwendet werden:
$ awk -f ': "begin ofs =" ==> "; print $ 1, $ 4;' /etc /passwdFügen Sie das Trennzeichen in das Feld in der Datei hinzu
In diesem Teil 10, Wir haben die Idee untersucht, awk-integrierte Variablen zu verwenden, die mit vordefinierten Werten geliefert werden. 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 angemessenem Verständnis.
Danach werden wir fortschreiten, um zu decken, wie wir Shell -Variablen in awk -Befehlsoperationen verwenden können, und bleiben daher miteinander verbunden mit Tecmint.
- « Geary - Ein gut aussehender moderner E -Mail -Client für Linux
- Cumulus - eine Echtzeitwetter -App für Linux -Desktops »