Heim  >  Artikel  >  php教程  >  Verwendung des AWK-Befehls

Verwendung des AWK-Befehls

高洛峰
高洛峰Original
2016-12-12 16:02:011386Durchsuche

Die grundlegendste Funktion von awk besteht darin, Informationen basierend auf bestimmten Regeln in Dateien oder Zeichenfolgen zu durchsuchen und zu extrahieren. Sie wird verwendet, um eine Zeile zur Verarbeitung in mehrere „Felder“ zu unterteilen. Geeignet für die Verarbeitung kleiner Datenmengen.

Beispiel:

cat /etc/passwd | /passwd wird durch „:“ getrennt, überprüfen Sie die Daten in der dritten Spalte auf weniger als 10 und zeigen Sie nur die Kontonummer und die dritte Spalte an.


Ausführungsmethode, z als:

awk [-Field-separator] 'Befehle' Eingabedatei(en)

Hier sind Befehle die echten awk-Befehle, [-F Feldtrenner] ist optional, awk verwendet Leerzeichen standardmäßig getrennt. Wenn Sie also Text mit Leerzeichen zwischen Feldern durchsuchen möchten, müssen Sie diese Option nicht angeben. Wenn Sie jedoch eine Datei wie passwd durchsuchen, die Doppelpunkte als Trennzeichen für jedes Feld verwendet, müssen Sie -F verwenden Option: awk -F : 'commands' input -file


Wenn awk ausgeführt wird, sind seine Browsing-Tags $1, $2...$n, diese Methode wird Domain genannt Markieren. Verwenden Sie $1 und $3, um auf das erste und dritte Feld zu verweisen. Beachten Sie, dass Kommas zum Trennen der Felder verwendet werden und $0 bedeutet, dass alle Felder verwendet werden. Zum Beispiel:

awk '{print $0}' temp.txt > sav.txt

bedeutet, dass alle Felder gedruckt und die Ergebnisse umgeleitet werden Gehen Sie zu sav.txt

awk '{print $0}' temp.txt |. sav.txt

Ähnlich wie im obigen Beispiel, aber anders wird auf dem Bildschirm angezeigt

awk '{print $1,$4}' temp.txt

Nur den 1. und ausdrucken Domäne 4


awk 'BEGIN {print "NAME GRADEn----"} {print $1"t"$4}' temp.txt


gibt einen Nachrichtenkopf an, d. h. fügen Sie „NAME GRADen-------------“ vor der ersten Zeile des Eingabeinhalts hinzu und gleichzeitig wird der Inhalt durch Tabulatoren getrennt

awk 'BEGIN {print "being"} {print $1} END {print "end"}' temp

Nachrichtenkopf und Nachrichtentrailer gleichzeitig drucken



Bedingungsoperator:


<, <=, ==, !=, >=, ~ stimmt mit regulären Ausdrücken überein, !~ stimmt nicht mit regulären Ausdrücken überein

Übereinstimmungen: awk '{if ($4~/ASIMA/) print $0}' temp bedeutet, wenn das vierte Feld ASIMA enthält, wird das gesamte gedruckt

Genaue Übereinstimmung: awk '$3==" 48" {print $0}' temp Nur den Datensatz drucken, dessen drittes Feld gleich „48“ ist

Keine Übereinstimmung: awk '$0 !~ /ASIMA/' temp Den gesamten Datensatz ohne ASIMA drucken. Die Datensätze von

sind nicht gleich: awk '$1 != "asima"' temp

sind kleiner als: awk '{if ($1<$2 ) print $1 "ist kleiner"}' temp

Set case: awk '/[Gg]reen/' temp Gibt das Ganze aus Datensatz mit Grün oder Grün

Beliebiges Zeichen: awk '$1 ~/^...a/' temp Druckt den Datensatz aus, in dem das vierte Zeichen im ersten Feld ein ist Symbol '^' stellt den Anfang der Zeile dar und entspricht '.' Stellt ein beliebiges Zeichen dar

oder relationale Übereinstimmung: awk '$0~/(abc)|(efg)/' temp Wann Bei Verwendung von | muss die Anweisung in

AND und die Beziehung eingeschlossen werden: awk '{if ( $1=="a" && $2=="b" ) print $0}' temp

ODER oder Beziehung: awk ' {if ($1=="a" || $1=="b") print $0}' temp

integrierte awk-Variable:

 awk内置变量

Beispiel: awk 'END {print NR}' temp Gibt am Ende die Anzahl der gelesenen Datensätze aus

awk '{print NF, NR, $0} END {print FILENAME} ' temp

awk '{if (NR>0 && $4~/Brown/) print $0}' temp Es gibt mindestens einen Datensatz, der Brown enthält

Eine andere Verwendung von NF: echo $PWD -F/ '{print $NF}' Zeigt den aktuellen Verzeichnisnamen an


Ausführungsmodus: awk 'Bedingungstyp 1{Aktion 1} Bedingungstyp 2{Aktion 2} ...' Dateiname

# last |. awk '{print $1 "t" $3}' <== Zeigt die Anmeldedaten an, zeigt nur den Anmeldenamen und die IP-Adresse an, getrennt durch [Tab] Die integrierten Variablen von awk stellen die Bedeutung dar

NF Die Gesamtzahl der Felder in jeder Zeile ($0)

NR Die „Anzahl der Zeilen“ der Daten, die awk derzeit verarbeitet

FS gibt das Trennzeichen an, der Standardwert ist eine Leertaste



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Linux awk-BefehlNächster Artikel:Linux awk-Befehl