Erfahren Sie, wie Sie awk eingebaute Variablen verwenden - Teil 10

Erfahren Sie, wie Sie awk eingebaute Variablen verwenden - Teil 10

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:

  1. DATEINAMEN : Aktueller Eingabedatei Name (nicht den variablen Namen ändern)
  2. Fr : Anzahl der aktuellen Eingangsleitung (dh Eingangsleitung 1, 2, 3… also ändern Sie den variablen Namen nicht)
  3. Nf : Anzahl der Felder in der aktuellen Eingangsleitung (ändern Sie den variablen Namen nicht)
  4. Ofs : Ausgangsfeldabscheider
  5. Fs : Eingangsfeldabscheider
  6. Ors : Ausgangsrekordabscheider
  7. Rs : 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:

  1. Eine Methode besteht darin, die zu verwenden Fs integrierte Variable
  2. 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.