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!