Dieses Kapitel beschreibt einige nützliche AWK-Befehle und die entsprechenden Beispiele. Betrachten Sie eine Textdatei Markierungen.txt, das mit folgendem Inhalt verarbeitet werden soll –
1) Amit Physics 802) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
Spalte oder Feld drucken
Sie können AWK anweisen, nur bestimmte Spalten aus dem Eingabefeld zu drucken., Das folgende Beispiel zeigt dies –
Example
$ awk '{print $3 "\t" $4}' marks.txt
Beim Ausführen dieses Codes erhalten Sie das folgende Ergebnis −
Output
Physics 80Maths 90Biology 87English 85History 89
In den Dateimarkierungen.txt, die dritte Spalte enthält den Betreff Namen und die vierte Spalte enthält die Markierungen in einem bestimmten Thema erhalten. Lassen Sie uns diese beiden Spalten mit dem Befehl AWK print drucken. Im obigen Beispiel stellen $3 und $4 das dritte und das vierte Feld aus dem Eingabedatensatz dar.
Drucken aller Zeilen
Standardmäßig druckt AWK alle Zeilen, die dem Muster entsprechen.,
Beispiel
$ awk '/a/ {print $0}' marks.txt
Beim Ausführen dieses Codes erhalten Sie das folgende Ergebnis −
Ausgabe
2) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
Im obigen Beispiel suchen wir nach Formularmuster a. Wenn eine Musterübereinstimmung erfolgreich ist, wird ein Befehl aus dem Body-Block ausgeführt. In Ermangelung eines Body − Blocks wird eine Standardaktion ausgeführt, bei der der Datensatz gedruckt wird. Daher erzeugt der folgende Befehl das gleiche Ergebnis –
Beispiel
$ awk '/a/' marks.txt
Drucken von Spalten nach Muster
Wenn eine Musterübereinstimmung erfolgreich ist, druckt AWK standardmäßig den gesamten Datensatz., Sie können AWK jedoch anweisen, nur bestimmte Felder zu drucken. Das folgende Beispiel druckt beispielsweise das dritte und vierte Feld, wenn eine Musterübereinstimmung erfolgreich ist.
Beispiel
$ awk '/a/ {print $3 "\t" $4}' marks.txt
Beim Ausführen dieses Codes erhalten Sie das folgende Ergebnis −
Ausgabe
Maths 90Biology 87English 85History 89
Spalte in beliebiger Reihenfolge drucken
Sie können Spalten in beliebiger Reihenfolge drucken. Im folgenden Beispiel wird beispielsweise die vierte Spalte gefolgt von der dritten Spalte gedruckt.,
Beispiel
$ awk '/a/ {print $4 "\t" $3}' marks.txt
Beim Ausführen des obigen Codes erhalten Sie das folgende Ergebnis −
Ausgabe
90 Maths87 Biology85 English89 History
Zählen und Drucken übereinstimmender Muster
Lassen Sie uns ein Beispiel sehen, in dem Sie die Anzahl der Zeilen zählen und drucken können, für die eine Musterübereinstimmung erfolgreich war.
Beispiel
$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
Beim Ausführen dieses Codes erhalten Sie das folgende Ergebnis −
Ausgabe
Count = 4
In diesem Beispiel erhöhen wir den Wert des Zählers, wenn eine Musterübereinstimmung erfolgreich ist, und drucken diesen Wert im Endblock., Beachten Sie, dass im Gegensatz zu anderen Programmiersprachen vor der Verwendung keine Variable deklariert werden muss.
Drucken von Zeilen mit mehr als 18 Zeichen
Lassen Sie uns nur die Zeilen drucken, die mehr als 18 Zeichen enthalten.
Beispiel
$ awk 'length($0) > 18' marks.txt
Beim Ausführen dieses Codes erhalten Sie das folgende Ergebnis −
Ausgabe
3) Shyam Biology 874) Kedar English 85
AWK bietet eine integrierte Längenfunktion, die die Länge der Zeichenfolge zurückgibt. Die Variable $0 speichert die gesamte Zeile und in Ermangelung eines Body-Blocks wird die Standardaktion ausgeführt, dh die Druckaktion., Wenn also eine Zeile mehr als 18 Zeichen hat, dann ergibt sich der Vergleich wahr und die Zeile wird gedruckt.