Heim > php教程 > PHP开发 > Detaillierte Erläuterung der Verwendung des Linux-Befehls awk

Detaillierte Erläuterung der Verwendung des Linux-Befehls awk

高洛峰
Freigeben: 2016-12-15 11:14:07
Original
1248 Leute haben es durchsucht

Eine kurze Einführung: Im Vergleich zur Grep-Suche und SED-Bearbeitung ist awk besonders leistungsfähig, wenn es um die Analyse von Daten und die Generierung von Berichten geht Wenn Sie mehr über seine Lebenserfahrung erfahren möchten, suchen Sie einfach selbst danach. In Bezug auf das Wissen über Werkzeuge versucht der Autor, jeden Wissenspunkt kurz zu erläutern und Beispiele zu geben.

Um es einfach auszudrücken: awk liest die Datei Zeile für Zeile, unterteilt jede Zeile mit Leerzeichen als Standardtrennzeichen und führt dann verschiedene Analysen und Verarbeitungen an den ausgeschnittenen Teilen durch.

Verwendung:
awk [Optionen] 'Skripte' Datei1, Datei2...
awk [Optionen] 'Muster {Aktion}' Datei1, Datei2...

Optionen Es handelt sich um eine von awk unterstützte Option, z. B. -F -v usw.; Skripte sind ihr Verarbeitungsskript, einschließlich Modusmuster und Aktion (die Beziehung zwischen Modus und Aktion ist im Allgemeinen wie folgt: Der Modus ist für die Bestimmung gültiger Felder verantwortlich Aktion ist für deren Verarbeitung verantwortlich)

1. Einfache Verwendung von print

Erstellen Sie eine einfache Testdatei wie folgt:

[root@mos download]# cat demo.txt

Willkommen im Mos-Blog.

Dies ist eine Testdatei.


Beispiel: Drucken Sie die gesamte Zeile aus: $0

[root@mos download]# awk '{print $0}' demo .txt

Willkommen im Mos-Blog.

Dies ist eine Testdatei.

Beispiel: Drucken Sie jeweils das letzte Feld aus Zeile: $NF

[ root@mos download]# awk '{print $NF}' demo.txt

blog.

file.

Beispiel: Drucken Sie das zweite Feld: $2

[root@mos download]# awk '{print $2}' demo.txt

to

is

Beispiel: Drucken Sie das vorletzte Feld jeder Zeile aus und drucken Sie OK

[root@mos download]# awk '{print $(NF-1),"OK"}' demo.txt

mos OK

test OK

Beispiel: Zeilennummer drucken

[root@mos download]# awk '{print NR,$0}' demo.txt

1 Willkommen im MOS-Blog.

2 Dies ist eine Testdatei.

Beispiel: Drucken Sie einen bestimmten Wert der aktuellen Systemumgebungsvariablen, z. B. den Pfad, die Ausgabe der folgenden beiden ist dasselbe

[root@mos download]# awk '{print ENVIRON["USER"];}' demo.txt

root

root

[root@mos download]# awk 'BEGIN{print ENVIRON["PATH"];}'

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/ local/sbin:/usr/local/bin:/sbin :/bin:/usr/sbin:/usr/bin:/root/bin

PS: Die folgenden Dateien dienen nur zur erfolgreichen Ausführung des Drucks. BEGIN sind die Daten, die vor der Ausführung ausgegeben werden können. Sie werden häufig zum Schreiben von Berichten und Testausgaben verwendet. Ihr Inhalt kann keine Variablen im Zusammenhang mit Dateiänderungsvorgängen erhalten, die später erwähnt werden Das Standardtrennzeichen von awk ist ein Leerzeichen, und einige Textwörter verwenden andere Zeichen als Trennzeichen, wie folgt. Die beiden Beispiele sind gleich

[root@mos download]# awk -F: {'print $1,$NF '} /etc/passwd|tail -1

mos1 /bin/bash

[root@mos download]# awk -v FS=: '{print $1,$NF}' / etc/passwd|head -1

root /bin/bash

Beispiel: Ändern Sie das Ausgabetrennzeichen, Sonderzeichen müssen wie folgt maskiert werden:

[root@ mos download]# awk -v OFS=. '{print $1,$NF}' demo.txt

Welcome.blog.

This.file.

[root @mos download]# awk -v OFS="~"'{print $1,$NF}' demo .txt

Willkommen~Blog.

Diese~Datei.

[root@mos download]# awk -v OFS=" '{print $1,$NF}' demo.txt

Willkommen"Blog.

Diese"Datei.

[root@mos download]# awk -v OFS=9 '{print $1,$NF} ' demo.txt

Welcome9blog.

This9file.

[ root@mos download]# awk -v OFS=XXXX '{print $1,$NF}' txt

WelcomeXXXXblog.

ThisXXXXfile.

PS: Wenn Kommas nicht zwischen Druckausgabefeldern geschrieben werden, ist das Ausgabetrennzeichen ungültig und die Ausgabeergebnisse werden direkt mit Together verbunden

Es gibt viele Standardvariablen in awk, wie zum Beispiel die zuvor aufgeführten: $1~$n, $0 , FS, OFS usw. Das Bild unten zeigt die in awk integrierte Variablentabelle:

Attributbeschreibung

$0 Aktueller Datensatz (als einzelne Variable)

$1~$n Das n-te Feld des aktueller Datensatz, zwischen Feldern, durch FS begrenzt

FS Das standardmäßige Eingabefeldtrennzeichen ist ein Leerzeichen

NF Die Anzahl der Felder im aktuellen Datensatz gibt an, wie viele Spalten es gibt

NR Die Anzahl der gelesenen Datensätze. Es ist die Zeilennummer, beginnend bei 1

RS Das Eingabedatensatztrennzeichen ist standardmäßig das Zeilenumbruchzeichen

OFS Das Standardausgabefeldtrennzeichen ist ebenfalls a Leerzeichen

ORS Das Ausgabedatensatztrennzeichen, der Standardwert ist ein Zeilenumbruchzeichen

ARGC-Anzahl der Befehlszeilenparameter

ARGV-Befehlszeilenparameter-Array

DATEINAME Name von die aktuelle Eingabedatei

IGNORECASE wenn wahr, dann einen Vergleich unter Berücksichtigung der Groß- und Kleinschreibung durchführen

ARGIND ARGV-Identifikator der aktuell verarbeiteten Datei

CONVFMT Zahlenkonvertierungsformat %.6g

ENVIRON UNIX-Umgebungsvariable

ERRNO UNIX-Systemfehlermeldung

FIELDWIDTHS Eine durch Leerzeichen getrennte Zeichenfolge von Eingabefeldbreiten

FNR Aktuelle Anzahl von Datensätzen

OFMT-Ausgabeformat für Zahlen %.6g

RSTART Der Anfang der von der Matching-Funktion abgeglichenen Zeichenfolge

RLENGTH Die Länge der von der Matching-Funktion abgeglichenen Zeichenfolge

SUBSEP

Haftungsausschluss: Da viele Variablen vom Autor nicht häufig verwendet werden, habe ich sie hier nicht alle aufgelistet.



Ausführlichere Artikel zur Verwendung von Linux-Awk-Befehlen finden Sie auf der chinesischen PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage