Erfahren Sie, wie Sie awk eingebaute Variablen verwenden - Teil 10
- 4807
- 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 Beispiele Eingebaut 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.txt
Awk 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.txt
Dateiinhalte drucken $ awk 'Ende print "Anzahl der Datensätze in der Datei ist:", nr' ~/Domains.txt
Awk 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.txt
Listendateiinhalte $ awk 'print "record:", nr, "hat", nf, "fields"; '~/names.txt
Awk 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 /passwd
Awk Filterfelder in der Passwortdatei Optional können wir auch die ausnutzen Fs integrierte Variable wie unten:
$ awk 'begin fs = ":"; print $ 1, $ 4; ' /etc /passwd
Filterfelder 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 /passwd
Fü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 »