EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

gawk – Online in der Cloud

Führen Sie gawk im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl gawk, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


gawk – Sprache zum Scannen und Verarbeiten von Mustern

ZUSAMMENFASSUNG


gaffen [POSIX- oder GNU-Stiloptionen] -f Programmdatei [ -- ] Datei ...
gaffen [POSIX- oder GNU-Stiloptionen] [ -- ] Programmtext Datei ...

BESCHREIBUNG


Gaffen ist die Implementierung der Programmiersprache AWK durch das GNU-Projekt. Es entspricht
die Definition der Sprache im POSIX 1003.1 Standard. Diese Version wiederum ist
basierend auf der Beschreibung in Das AWK Programmierung Sprache, von Aho, Kernighan und
Weinberger. Gaffen stellt die zusätzlichen Funktionen bereit, die in der aktuellen Version von Brian enthalten sind
Kernighans awk und eine Reihe von GNU-spezifischen Erweiterungen.

Die Befehlszeile besteht aus Optionen für gaffen selbst, der AWK-Programmtext (falls nicht angegeben).
über das -f or --Datei Optionen) und Werte, die im verfügbar gemacht werden sollen Argc und ARGV vor
definierte AWK-Variablen.

Wann gaffen wird mit dem aufgerufen --Profil Wenn Sie diese Option auswählen, werden Profilierungsstatistiken erfasst
aus der Ausführung des Programms. Gaffen läuft in diesem Modus langsamer und automatisch
erzeugt ein Ausführungsprofil in der Datei awkprof.out wenn fertig. Siehe die --Profil
Option, unten.

Gaffen verfügt außerdem über einen integrierten Debugger. Eine interaktive Debugging-Sitzung kann gestartet werden
Lieferung der --debuggen Option zur Befehlszeile. In dieser Ausführungsart gaffen Belastungen
den AWK-Quellcode und fordert dann zur Eingabe von Debugging-Befehlen auf. Gaffen kann nur AWK debuggen
Programmquelle, die mit dem bereitgestellt wird -f Möglichkeit. Der Debugger ist dokumentiert in GAFFEN: Effektiv
AWK Programmierung.

zur Auswahl FORMAT


Gaffen Optionen können entweder traditionelle Ein-Buchstaben-Optionen im POSIX-Stil oder lange Optionen im GNU-Stil sein
Optionen. POSIX-Optionen beginnen mit einem einzelnen „-“, während lange Optionen mit „--“ beginnen. Lang
Optionen werden sowohl für GNU-spezifische Funktionen als auch für POSIX-vorgeschriebene Funktionen bereitgestellt.

Gaffen-spezifische Optionen werden normalerweise in Form langer Optionen verwendet. Argumente für lange Optionen
werden entweder durch ein mit der Option verbunden = Zeichen, ohne dazwischenliegende Leerzeichen, oder sie könnten es auch sein
wird im nächsten Befehlszeilenargument bereitgestellt. Lange Optionen können abgekürzt werden, solange
Die Abkürzung bleibt einzigartig.

Darüber hinaus gibt es zu jeder Long-Option eine entsprechende Short-Option, sodass die Option
Die Funktionalität kann von innen genutzt werden #! ausführbare Skripte.

OPTIONAL


Gaffen akzeptiert die folgenden Optionen. Standardoptionen werden zuerst aufgeführt, gefolgt von
Optionen für gaffen Erweiterungen, alphabetisch nach Kurzoption aufgelistet.

-f Programmdatei
--Datei Programmdatei
Lesen Sie die AWK-Programmquelle aus der Datei Programmdatei, statt vom ersten
Befehlszeilenargument. Mehrere -f (oder --Datei) Optionen können verwendet werden.

-F fs
--Feldtrenner fs
Verwenden Sie die fs für das Eingabefeldtrennzeichen (der Wert von FS vordefinierte Variable).

-v jung=Welle
--zuordnen jung=Welle
Weisen Sie den Wert zu Welle auf die Variable jung, bevor die Ausführung des Programms beginnt.
Solche Variablenwerte stehen dem zur Verfügung START Regel eines AWK-Programms.

-b
--characters-as-bytes
Behandeln Sie alle Eingabedaten als Einzelbyte-Zeichen. Mit anderen Worten: Zahlen Sie nichts
Beachten Sie die Gebietsschemainformationen, wenn Sie versuchen, Zeichenfolgen als Multibyte zu verarbeiten
Zeichen. Das --posix Die Option überschreibt diese.

-c
--traditionell
Einlaufen Kompatibilität Modus. Im Kompatibilitätsmodus gaffen verhält sich identisch zu
Brian Kernighans awk; Keine der GNU-spezifischen Erweiterungen wird erkannt. Sehen GNU
ERWEITERUNGEN, unten, für weitere Informationen.

-C
--Urheberrechte ©
Drucken Sie die Kurzversion der GNU-Copyright-Informationsnachricht zum Standard aus
Ausgabe und Beendigung erfolgreich.

-d[Datei]
--dump-Variablen[=Datei]
Drucken Sie eine sortierte Liste globaler Variablen, ihrer Typen und Endwerte aus Datei. Wenn
nicht Datei wird gestellt, gaffen verwendet eine Datei mit dem Namen awkvars.out im aktuellen Verzeichnis.
Eine Liste aller globalen Variablen ist eine gute Möglichkeit, nach Typografie zu suchen
Fehler in Ihren Programmen. Sie würden diese Option auch verwenden, wenn Sie ein großes haben
Programm mit vielen Funktionen, und Sie möchten sicher sein, dass Ihre Funktionen dies nicht tun
versehentlich globale Variablen verwenden, die lokal sein sollten. (Das ist ein
Besonders leicht kann bei einfachen Variablennamen ein Fehler gemacht werden i, j, usw.)

-D[Datei]
--debuggen[=Datei]
Aktivieren Sie das Debuggen von AWK-Programmen. Standardmäßig liest der Debugger Befehle
interaktiv über die Tastatur (Standardeingabe). Die Wahl Datei Argument
Gibt eine Datei mit einer Liste von Befehlen an, die der Debugger nicht ausführen soll.
interaktiv.

-e Programmtext
--Quelle Programmtext
Verwenden Sie die Programmtext als AWK-Programmquellcode. Diese Option ermöglicht das einfache
Vermischung von Bibliotheksfunktionen (verwendet über die -f und --Datei Optionen) mit Quelle
Code, der in der Befehlszeile eingegeben wird. Es ist in erster Linie für mittlere bis große AWK gedacht
Programme, die in Shell-Skripten verwendet werden.

-E Datei
--exec Datei
Ähnlich -f, diese Option ist jedoch die letzte, die verarbeitet wird. Das sollte sein
benutzt mit #! Skripte, insbesondere für CGI-Anwendungen, um eine Weitergabe zu vermeiden
Optionen oder Quellcode (!) in der Befehlszeile von einer URL aus. Diese Option ist deaktiviert
Zuweisungen von Befehlszeilenvariablen.

-g
--gen-pot
Scannen und analysieren Sie das AWK-Programm und generieren Sie ein GNU .Topf (Vorlage für tragbare Objekte)
Formatdatei auf der Standardausgabe mit Einträgen für alle lokalisierbaren Zeichenfolgen in der
Programm. Das Programm selbst wird nicht ausgeführt. Siehe die GNU gettext Verteilung für
Weitere Informationen zu .Topf Dateien.

-h
--help Drucken Sie eine relativ kurze Zusammenfassung der verfügbaren Optionen auf der Standardausgabe.
(Gemäß der GNU Programmierung Standards, diese Optionen führen zu einem sofortigen, erfolgreichen Beenden.)

-i Include-Datei
--enthalten Include-Datei
Laden Sie eine awk-Quellbibliothek. Dadurch wird nach der Bibliothek mithilfe von gesucht AWKPATH
Umgebungsvariable. Wenn die erste Suche fehlschlägt, wird ein weiterer Versuch unternommen
nach dem Anhängen der .awk Suffix. Die Datei wird nur einmal geladen (d. h.
Duplikate werden eliminiert) und der Code stellt nicht das Hauptprogramm dar
Quelle.

-l lib
--Belastung lib
Laden Sie eine gemeinsam genutzte Bibliothek lib. Dadurch wird nach der Bibliothek mithilfe von gesucht AWKLIBPATH
Umgebungsvariable. Wenn die erste Suche fehlschlägt, wird ein weiterer Versuch unternommen
nach dem Anhängen des Standard-Shared-Library-Suffixes für die Plattform. Die Bibliothek
Es wird erwartet, dass die Initialisierungsroutine benannt wird dl_load().

-L [Wert]
--Fussel[=Wert]
Geben Sie Warnungen vor Konstrukten aus, die zweifelhaft oder nicht auf andere AWK übertragbar sind
Implementierungen. Mit einem optionalen Argument von tödlich, Flusenwarnungen werden fatal
Fehler. Das mag einschneidend sein, aber sein Einsatz wird die Entwicklung sicherlich fördern
von saubereren AWK-Programmen. Mit einem optionalen Argument von ungültig, nur Warnungen vor
Es werden Dinge ausgestellt, die tatsächlich ungültig sind. (Dies ist noch nicht vollständig implementiert.)

-M
--bignum
Erzwingen Sie eine Arithmetik mit beliebiger Genauigkeit für Zahlen. Diese Option hat keine Auswirkung, wenn gaffen
ist nicht für die Verwendung der GNU MPFR- und MP-Bibliotheken kompiliert.

-n
--non-decimal-data
Erkennen Sie oktale und hexadezimale Werte in Eingabedaten. Verwenden Sie die fehlen uns die Worte. zu erhalten mit groß
Vorsicht!

-N
--use-lc-numeric
Diese Kräfte gaffen , um beim Parsen der Eingabe das Dezimalzeichen des Gebietsschemas zu verwenden
Daten. Obwohl der POSIX-Standard dieses Verhalten erfordert, und gaffen tut dies, wenn
--posix In der Tat besteht die Standardeinstellung darin, dem traditionellen Verhalten zu folgen und a zu verwenden
Geben Sie den Punkt als Dezimalpunkt ein, auch an Orten, an denen der Punkt nicht die Dezimalstelle ist
Punktcharakter. Diese Option überschreibt das Standardverhalten ohne das vollständige
drakonische Strenge der --posix .

-o[Datei]
--schöner Druck[=Datei]
Geben Sie eine hübsche gedruckte Version des Programms aus Datei. Wenn nein Datei wird gestellt,
gaffen verwendet eine Datei mit dem Namen awkprof.out im aktuellen Verzeichnis.

-O
--optimieren
Ermöglichen Sie Optimierungen bei der internen Darstellung des Programms. Momentan,
Dazu gehören die einfache Konstantenfaltung und die Eliminierung von Tail-Calls für rekursive Operationen
Funktionen. Das gaffen Der Betreuer hofft, im Laufe der Zeit weitere Optimierungen hinzufügen zu können.

-p[prof-Datei]
--Profil[=prof-Datei]
Starten Sie eine Profiling-Sitzung und senden Sie die Profiling-Daten an prof-Datei. Der Standard
is awkprof.out. Das Profil enthält die Ausführungsanzahl jeder Anweisung im
Programm am linken Rand und Anzahl der Funktionsaufrufe für jede benutzerdefinierte Funktion.

-P
--posix
Das schaltet sich ein Kompatibilität Modus, mit folgenden zusätzlichen Einschränkungen:

· \x Escape-Sequenzen werden nicht erkannt.

· Nur Leerzeichen und Tabulator dienen als Feldtrennzeichen, wenn FS wird auf ein einzelnes Leerzeichen gesetzt,
Newline nicht.

· Sie können die Zeilen danach nicht fortsetzen ? und :.

· Das Synonym Funkt für das Schlüsselwort Funktion wird nicht erkannt.

· Die Betreiber ** und **= kann nicht anstelle von verwendet werden ^ und ^=.

-r
--re-interval
Aktivieren Sie die Verwendung von Intervall Ausdrücke beim Abgleich regulärer Ausdrücke (siehe Lang
Ausdrücke, unter). Intervallausdrücke waren traditionell nicht verfügbar
AWK-Sprache. Der POSIX-Standard hat sie hinzugefügt, um sie zu erstellen awk und egrep im Einklang mit
gegenseitig. Sie sind standardmäßig aktiviert, diese Option bleibt jedoch weiterhin verfügbar
--traditionell.

-S
--Sandkasten
Läuft gaffen im Sandbox-Modus, Deaktivieren der System() Funktion, Eingabeumleitung mit
Getline, Ausgabeumleitung mit drucken und printfund Laden dynamischer Erweiterungen.
Die Befehlsausführung (über Pipelines) ist ebenfalls deaktiviert. Dies blockiert effektiv a
verhindert, dass das Skript auf lokale Ressourcen zugreift (mit Ausnahme der im angegebenen Dateien).
Befehlszeile).

-t
--lint-old
Geben Sie Warnungen zu Konstrukten aus, die nicht auf die Originalversion von portierbar sind
UNIX awk.

-V
--Version
Druckversionsinformationen für dieses spezielle Exemplar von gaffen auf der Standardausgabe.
Dies ist vor allem nützlich, um festzustellen, ob die aktuelle Kopie von gaffen auf Ihrem System ist aktiv
bis heute in Bezug auf alles, was die Free Software Foundation vertreibt.
Dies ist auch nützlich, wenn Sie Fehler melden. (Gemäß der GNU Programmierung Standards, Diese
Optionen führen zu einem sofortigen, erfolgreichen Beenden.)

-- Signalisieren Sie das Ende der Optionen. Dies ist nützlich, um dem AWK weitere Argumente zu ermöglichen
Das Programm selbst beginnt mit einem „-“. Dies sorgt für Konsistenz mit der Argumentation
Parsing-Konvention, die von den meisten anderen POSIX-Programmen verwendet wird.

Im Kompatibilitätsmodus werden alle anderen Optionen als ungültig gekennzeichnet, ansonsten jedoch
ignoriert. Im Normalbetrieb, solange Programmtext bereitgestellt wurde, unbekannte Optionen
werden an das AWK-Programm weitergegeben ARGV Array zur Verarbeitung. Das ist besonders
nützlich zum Ausführen von AWK-Programmen über das „#!“ ausführbarer Interpretermechanismus.

Aus Gründen der POSIX-Kompatibilität ist die -W Es kann eine Option verwendet werden, gefolgt vom Namen einer langen Option.

AWK PROGRAMM EXECUTION


Ein AWK-Programm besteht aus einer Folge von Muster-Aktionsanweisungen und optionalen Funktionen
Definitionen.

@enthalten "Dateinamen"
@Belastung "Dateinamen"
Anleitungen { Aktion Aussagen }
Funktion Name(Parameter Liste) { Aussagen }

Gaffen liest zunächst die Programmquelle aus dem Programmdatei(s) falls angegeben, aus Argumenten
zu --Quelleoder vom ersten Nicht-Optionsargument in der Befehlszeile. Der -f und
--Quelle Optionen können in der Befehlszeile mehrfach verwendet werden. Gaffen liest das Programm
Text, als ob alle Programmdateis und Befehlszeilen-Quelltexte wurden verkettet
zusammen. Dies ist nützlich, um Bibliotheken mit AWK-Funktionen zu erstellen, ohne dass dies erforderlich ist
Fügen Sie sie in jedes neue AWK-Programm ein, das sie verwendet. Es bietet auch die Möglichkeit zum Mischen
Bibliotheksfunktionen mit Kommandozeilenprogrammen.

Darüber hinaus beginnen Zeilen mit @enthalten kann verwendet werden, um andere Quelldateien einzubinden
Ihr Programm, was die Nutzung der Bibliothek noch einfacher macht. Dies entspricht der Verwendung von -i .

Zeilen beginnend mit @Belastung kann verwendet werden, um gemeinsam genutzte Bibliotheken in Ihr Programm zu laden. Das
ist gleichbedeutend mit der Verwendung von -l .

Die Umgebungsvariable AWKPATH Gibt einen Suchpfad an, der beim Suchen von Quelldateien verwendet werden soll
benannt mit dem -f und -i Optionen. Wenn diese Variable nicht vorhanden ist, lautet der Standardpfad
".:/usr/local/share/awk". (Das tatsächliche Verzeichnis kann je nach Vorgehensweise variieren gaffen wurde
erstellt und installiert.) Wenn ein Dateiname für die angegeben wurde -f Option enthält ein „/“-Zeichen, nein
Die Pfadsuche wird durchgeführt.

Die Umgebungsvariable AWKLIBPATH Gibt einen Suchpfad an, der beim Finden der Quelle verwendet werden soll
Dateien mit dem Namen -l Möglichkeit. Wenn diese Variable nicht vorhanden ist, lautet der Standardpfad
„/usr/local/lib/gawk“. (Das tatsächliche Verzeichnis kann je nach Vorgehensweise variieren gaffen erbaut wurde
und installiert.)

Gaffen führt AWK-Programme in der folgenden Reihenfolge aus. Zunächst alle Variablenzuweisungen
angegeben über die -v Option ausgeführt werden. Nächste, gaffen kompiliert das Programm in eine
innere Form. Dann, gaffen führt den Code im aus START Regel(n) (falls vorhanden) und dann
fährt mit dem Lesen jeder darin genannten Datei fort ARGV Array (bis zu ARGV[ARGC]). Wenn es keine gibt
in der Befehlszeile benannte Dateien, gaffen liest die Standardeingabe.

Wenn ein Dateiname in der Befehlszeile die Form hat jung=Welle es wird als Variable behandelt
Abtretung. Die Variable jung wird der Wert zugewiesen Welle. (Dies geschieht nach jedem
START Regel(n) wurden ausgeführt.) Die Zuweisung von Befehlszeilenvariablen ist am nützlichsten für
Dynamisches Zuweisen von Werten zu den Variablen, die AWK verwendet, um zu steuern, wie Eingaben aufgeteilt werden
Felder und Datensätze. Es ist auch nützlich für die Zustandskontrolle, wenn mehrere Durchgänge erforderlich sind
über eine einzelne Datendatei.

Wenn der Wert eines bestimmten Elements von ARGV ist leer (""), gaffen überspringt es.

Für jede Eingabedatei, wenn a ANFANGSDATEI Regel existiert, gaffen führt zuvor den zugehörigen Code aus
Verarbeitung des Inhalts der Datei. Ähnlich, gaffen führt den zugehörigen Code aus
ENDFILE nach der Bearbeitung der Datei.

Für jeden Datensatz in der Eingabe: gaffen testet, ob es mit einem übereinstimmt Anleitungen im AWK
Programm. Für jedes Muster, mit dem der Datensatz übereinstimmt, gaffen führt das zugehörige aus Aktion.
Die Muster werden in der Reihenfolge getestet, in der sie im Programm vorkommen.

Schließlich, nachdem alle Eingaben erschöpft sind, gaffen führt den Code im aus ENDE Regel(n) (falls
irgendein).

Befehl Line Verzeichnisse
Laut POSIX sind Dateien mit dem Namen awk Die Befehlszeile muss aus Textdateien bestehen. Das Verhalten
ist „undefiniert“, wenn dies nicht der Fall ist. Die meisten Versionen von awk Behandeln Sie ein Verzeichnis mit dem Befehl
Zeile als schwerwiegenden Fehler.

Ab Version 4.0 von gaffen, ein Verzeichnis in der Befehlszeile erzeugt eine Warnung, aber
wird ansonsten übersprungen. Wenn einer der --posix or --traditionell Optionen sind also gegeben
gaffen kehrt dazu zurück, Verzeichnisse in der Befehlszeile als schwerwiegenden Fehler zu behandeln.

VARIABLEN, AUFZEICHNUNGEN UND FELDER


AWK-Variablen sind dynamisch; Sie entstehen, wenn sie zum ersten Mal verwendet werden. Ihre
Werte sind entweder Gleitkommazahlen oder Zeichenfolgen oder beides, je nachdem, wie sie aussehen
gebraucht. AWK verfügt auch über eindimensionale Arrays; Arrays mit mehreren Dimensionen können sein
simuliert. Gaffen stellt echte Arrays von Arrays bereit; sehen Arrays, unter. Mehrere vordefinierte
Variablen werden während der Programmausführung festgelegt; Diese werden nach Bedarf beschrieben und im Folgenden zusammengefasst.

Aufzeichnungen
Normalerweise werden Datensätze durch Newline-Zeichen getrennt. Sie können steuern, wie Datensätze gespeichert werden
getrennt durch Zuweisen von Werten zur integrierten Variablen RS. Wenn RS ist ein beliebiges einzelnes Zeichen,
Dieses Zeichen trennt Datensätze. Ansonsten, RS ist ein regulärer Ausdruck. Text im
Eine Eingabe, die diesem regulären Ausdruck entspricht, trennt den Datensatz. Allerdings in
Im Kompatibilitätsmodus wird nur das erste Zeichen seines Zeichenfolgewerts zur Trennung verwendet
Aufzeichnungen. Wenn RS auf die Nullzeichenfolge gesetzt ist, werden die Datensätze durch Leerzeilen getrennt.
Wann RS auf den Nullstring gesetzt ist, fungiert das Newline-Zeichen immer als Feldtrenner,
zusätzlich zu welchem ​​Wert auch immer FS könnte haben.

Felder
Während jeder Eingabedatensatz gelesen wird, gaffen teilt den Datensatz auf Felder, unter Verwendung des Werts von
FS Variable als Feldtrennzeichen. Wenn FS ist ein einzelnes Zeichen, Felder werden durch getrennt
dieser Charakter. Wenn FS ist die Nullzeichenfolge, dann wird jedes einzelne Zeichen zu einem
separates Feld. Ansonsten, FS Es wird erwartet, dass es sich um einen vollständigen regulären Ausdruck handelt. Im
Sonderfall das FS Ist ein einzelnes Leerzeichen, werden die Felder durch Reihen von Leerzeichen und/oder Tabulatoren getrennt
und/oder Zeilenumbrüche. (Aber siehe den Abschnitt POSIX KOMPATIBILITÄT, unter). HINWEIS: Der Wert von
FALL IGNORIEREN (siehe unten) wirkt sich auch darauf aus, wie Felder wann aufgeteilt werden FS ist ein regulärer Ausdruck,
und wie Datensätze wann getrennt werden RS ist ein regulärer Ausdruck.

Besitzt das FELDBREITEN Die Variable wird auf eine durch Leerzeichen getrennte Liste von Zahlen gesetzt, jedes Feld ist es
voraussichtlich eine feste Breite haben, und gaffen Teilt den Datensatz anhand der angegebenen Breiten auf.
Der Wert der FS wird ignoriert. Einen neuen Wert zuweisen FS or FPAT überschreibt die Verwendung von
FELDBREITEN.

Ebenso, wenn die FPAT Die Variable wird jeweils auf eine Zeichenfolge gesetzt, die einen regulären Ausdruck darstellt
Das Feld besteht aus Text, der diesem regulären Ausdruck entspricht. In diesem Fall das reguläre
Der Ausdruck beschreibt die Felder selbst und nicht den Text, der die Felder trennt.
Einen neuen Wert zuweisen FS or FELDBREITEN überschreibt die Verwendung von FPAT.

Auf jedes Feld im Eingabedatensatz kann anhand seiner Position verwiesen werden: $1, $2, Und so weiter. $0
ist die ganze Aufzeichnung. Felder müssen nicht durch Konstanten referenziert werden:

n = 5
drucken $n

druckt das fünfte Feld im Eingabedatensatz.

Die Variable NF wird auf die Gesamtzahl der Felder im Eingabedatensatz gesetzt.

Verweise auf nicht vorhandene Felder (d. h. Felder nach $ Nf) erzeugen den Null-String.
Die Zuweisung zu einem nicht vorhandenen Feld (z. B. $(NF+2) = 5) erhöht den Wert von NF,
erstellt alle dazwischen liegenden Felder mit der Nullzeichenfolge als Wert und verursacht den Wert
of $0 neu berechnet werden, wobei die Felder durch den Wert von getrennt werden OFS. Verweise
Felder mit negativen Nummern führen zu einem schwerwiegenden Fehler. Dekrementieren NF verursacht die Werte von
Felder nach dem neuen Wert gehen verloren, und der Wert von $0 neu berechnet werden, mit dem
Felder werden durch den Wert von getrennt OFS.

Wenn Sie einem vorhandenen Feld einen Wert zuweisen, wird der gesamte Datensatz neu erstellt $0 is
verwiesen. Ebenso das Zuweisen eines Werts zu $0 bewirkt, dass der Datensatz neu aufgeteilt wird, wodurch erstellt wird
neue Werte für die Felder.

Eingebaut Variablen
GaffenDie integrierten Variablen sind:

Argc Die Anzahl der Befehlszeilenargumente (ohne Optionen für gaffenOder das
Programmquelle).

ARGIND Der Index in ARGV der aktuell verarbeiteten Datei.

ARGV Array von Befehlszeilenargumenten. Das Array ist von 0 bis indiziert Argc - 1.
Dynamische Änderung des Inhalts von ARGV kann die für Daten verwendeten Dateien steuern.

BINMODUS Gibt auf Nicht-POSIX-Systemen die Verwendung des „Binärmodus“ für alle Datei-E/A an.
Numerische Werte von 1, 2 oder 3 geben an, dass es sich um Eingabedateien, Ausgabedateien oder alle handelt
Dateien sollten jeweils binäre E/A verwenden. Zeichenfolgenwerte von "R", oder "w"
Geben Sie an, dass Eingabedateien bzw. Ausgabedateien Binärdateien verwenden sollen
E/A. Zeichenfolgenwerte von „rw“ or „wr“ Geben Sie an, dass alle Dateien binär sein sollen
E/A. Jeder andere Zeichenfolgenwert wird als behandelt „rw“, generiert aber eine Warnung
Nachricht.

CONVFMT Das Konvertierungsformat für Zahlen, „%.6g“, standardmäßig.

UMWELT Ein Array, das die Werte der aktuellen Umgebung enthält. Das Array ist
durch die Umgebungsvariablen indiziert, wobei jedes Element deren Wert ist
Variable (z. B. UMGEBUNG["HOME"] könnte sein, „/home/arnold“). Dieses Array ändern
hat keinen Einfluss auf die Umgebung, die von Programmen gesehen wird, die gaffen spawnt über
Umleitung bzw System() Funktion.

FEHLERNO Wenn ein Systemfehler auftritt, führen Sie entweder eine Umleitung durch Getline, während einer Lektüre
für Getline, oder während eines schließen() und dann FEHLERNO enthält eine beschreibende Zeichenfolge
der Fehler. Der Wert kann in nicht-englischen Sprachen übersetzt werden.

FELDBREITEN Eine durch Leerzeichen getrennte Liste von Feldbreiten. Wenn eingestellt, gaffen analysiert die Eingabe
in Felder mit fester Breite, anstatt den Wert von zu verwenden FS variabel wie
das Feldtrennzeichen. Sehen Felder, über.

DATEINAME Der Name der aktuellen Eingabedatei. Wenn im Befehl keine Dateien angegeben sind
Linie, der Wert von DATEINAME Ist "-". Jedoch, DATEINAME ist innerhalb der undefiniert
START Regel (sofern nicht von festgelegt). Getline).

FNR Die Eingabedatensatznummer in der aktuellen Eingabedatei.

FPAT Ein regulärer Ausdruck, der den Inhalt der Felder in einem Datensatz beschreibt. Wenn
Set, gaffen Analysiert die Eingabe in Felder, wobei die Felder mit den regulären Feldern übereinstimmen
Ausdruck, anstatt den Wert des zu verwenden FS Variable wie das Feld
Separator. Sehen Felder, über.

FS Das Eingabefeldtrennzeichen, standardmäßig ein Leerzeichen. Sehen Felder, über.

FUNKTAB Ein Array, dessen Indizes und entsprechende Werte die Namen aller Benutzer sind.
definierte oder Erweiterungsfunktionen im Programm. HINWEIS: Sie dürfen das nicht verwenden
löschen Aussage mit dem FUNKTAB Array.

FALL IGNORIEREN Steuert die Groß-/Kleinschreibung aller regulären Ausdrucks- und Zeichenfolgenoperationen.
If FALL IGNORIEREN hat einen Wert ungleich Null, dann Stringvergleiche und Muster
Abgleich in Regeln, Feldaufteilung mit FS und FPAT, Datensatztrennung mit
RS, regulärer Ausdruck, der mit übereinstimmt ~ und !~und der gensub(), gsub(),
Index(), Spiel(), patsplit(), Teilt() und sub() Integrierte Funktionen werden alle ignoriert
Fall, wenn reguläre Ausdrucksoperationen ausgeführt werden. HINWEIS: Array-Subskription ist
nicht betroffen. Allerdings ist die sortieren() und sorti() Funktionen sind betroffen.
Also wenn FALL IGNORIEREN ungleich Null ist, /aB/ stimmt mit allen Zeichenfolgen überein
"ab", „aB“, "Ab" und "AB". Wie bei allen AWK-Variablen ist der Anfangswert von
FALL IGNORIEREN ist Null, das gilt auch für alle regulären Ausdrücke und Zeichenfolgenoperationen
Normalerweise wird zwischen Groß- und Kleinschreibung unterschieden.

FUSSEL Bietet dynamische Steuerung des --Fussel Option aus einem AWK-Programm heraus.
Wenn wahr, gaffen gibt Flusenwarnungen aus. Bei „false“ ist dies nicht der Fall. Bei Zuweisung
der Stringwert "tödlich", Flusenwarnungen werden zu schwerwiegenden Fehlern, genau wie
--lint=fatal. Jeder andere wahre Wert gibt nur Warnungen aus.

NF Die Anzahl der Felder im aktuellen Eingabedatensatz.

NR Die Gesamtzahl der bisher gesehenen Eingabedatensätze.

OFMT Das Ausgabeformat für Zahlen, „%.6g“, standardmäßig.

OFS Das Ausgabefeldtrennzeichen, standardmäßig ein Leerzeichen.

ORS Das Trennzeichen für den Ausgabedatensatz, standardmäßig eine neue Zeile.

ZURÜCK Die Arbeitsgenauigkeit von Gleitkommazahlen beliebiger Genauigkeit, 53 von
default.

PROCINFO Die Elemente dieses Arrays ermöglichen den Zugriff auf Informationen über das laufende AWK
Programm. Auf einigen Systemen kann es Elemente im Array geben, "Gruppe 1"
bis "Gruppen" für einige n, das ist die Anzahl der Zusatzgruppen, die
Der Prozess hat. Benutzen Sie die in Operator zum Testen auf diese Elemente. Der
Folgende Elemente sind garantiert verfügbar:

PROCINFO["egid"] Der Wert der getegid(2) Systemaufruf.

PROCINFO["strftime"]
Die Standardzeitformatzeichenfolge für strftime ().

PROCINFO["euid"] Der Wert der geteuid(2) Systemaufruf.

PROCINFO["FS"] „FS“ wenn Feldaufteilung mit FS ist in Kraft, „FPAT“ if
Feldaufteilung mit FPAT in Kraft ist, oder „FELDBREITEN“
wenn Feldaufteilung mit FELDBREITEN ist in Kraft.

PROCINFO["identifiers"]
Ein Subarray, indiziert durch die Namen aller verwendeten Bezeichner
im Text des AWK-Programms. Die Werte geben an, was
gaffen kennt die Bezeichner, nachdem es fertig ist
Parsen des Programms; sie sind nicht aktualisiert, während die
Programm läuft. Für jeden Bezeichner der Wert von
Element ist eines der folgenden:

"array"
Der Bezeichner ist ein Array.

„eingebaut“
Der Bezeichner ist eine integrierte Funktion.

"Verlängerung"
Der Bezeichner ist eine über geladene Erweiterungsfunktion
@Belastung or -l.

„Skalar“
Der Bezeichner ist ein Skalar.

„untypisiert“
Der Bezeichner ist untypisiert (könnte als verwendet werden).
Skalar oder Array, gaffen weiß es noch nicht).

"Nutzer" Der Bezeichner ist eine benutzerdefinierte Funktion.

PROCINFO["gid"] Der Wert der getgid(2) Systemaufruf.

PROCINFO["pgrpid"] Die Prozessgruppen-ID des aktuellen Prozesses.

PROCINFO["pid"] Die Prozess-ID des aktuellen Prozesses.

PROCINFO["ppid"] Die übergeordnete Prozess-ID des aktuellen Prozesses.

PROCINFO["uid"] Der Wert der getuid(2) Systemaufruf.

PROCINFO["sorted_in"]
Wenn dieses Element vorhanden ist PROCINFO, dann sein Wert
steuert die Reihenfolge, in der Array-Elemente durchlaufen werden
in für Schleifen. Unterstützte Werte sind „@ind_str_asc“,
„@ind_num_asc“, „@val_type_asc“, „@val_str_asc“,
„@val_num_asc“, „@ind_str_desc“, „@ind_num_desc“,
„@val_type_desc“, „@val_str_desc“, „@val_num_desc“ und
„@unsorted“. Der Wert kann auch der Name eines beliebigen sein
Vergleichsfunktion wie folgt definiert:

Funktion cmp_func(i1, v1, i2 v2)

woher i1 und i2 sind die Indizes und v1 und v2 sind die
entsprechende Werte der beiden verglichenen Elemente.
Es sollte eine Zahl zurückgeben, die kleiner, gleich oder größer ist
als 0, abhängig davon, wie die Elemente des Arrays angeordnet sind
bestellt.

PROCINFO["Eingabe", „READ_TIMEOUT“]
Das Timeout in Millisekunden für das Lesen von Daten aus Eingabe,
woher Eingabe ist eine Umleitungszeichenfolge oder ein Dateiname. Ein Wert
von Null oder kleiner als Null bedeutet, dass es keine Zeitüberschreitung gibt.

PROCINFO["mpfr_version"]
Die Version der GNU MPFR-Bibliothek, die für Arbitrary verwendet wird
Unterstützung für Präzisionszahlen in gaffen. Dieser Eintrag ist nicht
vorhanden, wenn die MPFR-Unterstützung nicht kompiliert ist gaffen.

PROCINFO["gmp_version"]
Die Version der GNU MP-Bibliothek, die für Arbitrary verwendet wird
Unterstützung für Präzisionszahlen in gaffen. Dieser Eintrag ist nicht
vorhanden, wenn die MPFR-Unterstützung nicht kompiliert ist gaffen.

PROCINFO["prec_max"]
Die maximale Präzision, die von der GNU MPFR-Bibliothek unterstützt wird
für Gleitkommazahlen beliebiger Genauigkeit. Das
Der Eintrag ist nicht vorhanden, wenn die MPFR-Unterstützung nicht kompiliert ist
gaffen.

PROCINFO["prec_min"]
Die von der GNU MPFR-Bibliothek zulässige Mindestgenauigkeit für
Gleitkommazahlen beliebiger Genauigkeit. Dieser Eintrag ist
Nicht vorhanden, wenn die MPFR-Unterstützung nicht kompiliert ist gaffen.

PROCINFO["api_major"]
Die Hauptversion der Erweiterungs-API. Dieser Eintrag ist nicht
vorhanden, wenn das Laden dynamischer Erweiterungen nicht möglich ist.

PROCINFO["api_minor"]
Die Nebenversion der Erweiterungs-API. Dieser Eintrag ist nicht
vorhanden, wenn das Laden dynamischer Erweiterungen nicht möglich ist.

PROCINFO["Version"] die Version von gaffen.

RUNDMODUS Der Rundungsmodus für die Arithmetik mit beliebiger Genauigkeit für Zahlen, um
Standard "N" (IEEE-754 RoundTiesToEven-Modus). Die akzeptierten Werte sind "N" or
"n" für RoundTiesToEven, "U" or "du" für RoundTowardPositive, "D" or "d" für
RoundTowardNegative, "Z" or "z" für RoundTowardZero und wenn Ihre Version von
Die GNU MPFR-Bibliothek unterstützt es, "A" or "ein" für RoundTiesToAway.

RS Das Trennzeichen für den Eingabedatensatz, standardmäßig eine neue Zeile.

RT Der Datensatzterminator. Gaffen Sets RT zum Eingabetext, der mit dem übereinstimmte
Zeichen oder regulärer Ausdruck, der durch angegeben wird RS.

RSTART Der Index des ersten Zeichens, mit dem übereinstimmt Spiel(); 0, wenn keine Übereinstimmung vorhanden ist. (Das
impliziert, dass Zeichenindizes bei eins beginnen.)

LÄNGE Die Länge der Zeichenfolge, mit der übereinstimmt Spiel(); -1, wenn keine Übereinstimmung vorhanden ist.

SUBSEP Das Zeichen, das zum Trennen mehrerer Indizes in Array-Elementen verwendet wird, durch
Standard "\034".

SYMTAB Ein Array, dessen Indizes die Namen aller aktuell definierten globalen Variablen sind
und Arrays im Programm. Das Array kann für indirekten Lesezugriff verwendet werden
oder schreiben Sie den Wert einer Variablen:

foo = 5
SYMTAB["foo"] = 4
drucken foo # Drucke 4

Das isarray() Funktion kann verwendet werden, um zu testen, ob ein Element in SYMTAB ist ein
Array. Sie dürfen das nicht verwenden löschen Aussage mit dem SYMTAB Array.

TEXTDOMAIN Die Textdomäne des AWK-Programms; Wird verwendet, um die lokalisierten Übersetzungen zu finden
für die Zeichenfolgen des Programms.

Arrays
Arrays werden mit einem Ausdruck in eckigen Klammern tiefgestellt ([ und ]). Wenn die
Ausdruck ist eine Ausdrucksliste (ausdr, ausdr ...), dann ist der Array-Index ein String
bestehend aus der Verkettung des (String-)Werts jedes Ausdrucks, getrennt durch
Wert der SUBSEP Variable. Diese Funktion wird zur Simulation mehrfach dimensionierter Objekte verwendet
Arrays. Zum Beispiel:

i = "A"; j = "B"; k = "C"
x[i, j, k] = "Hallo, Welt\n"

weist die Zeichenfolge zu "Hallo, Welt\n" zum Element des Arrays x die durch die indiziert wird
Schnur „A\034B\034C“. Alle Arrays in AWK sind assoziativ, dh durch Stringwerte indiziert.

Der Spezialoperator in kann verwendet werden, um zu testen, ob ein Array einen Index hat, der aus a besteht
Besonderer Wert:

if (Wert in Reihe)
drucken Array[Wert]

Wenn das Array mehrere Indizes hat, verwenden Sie (Und, j) in Array.

Das in Konstrukt kann auch in a verwendet werden für Schleife zum Durchlaufen aller Elemente von an
Array. Allerdings ist die (Und, j) in Array Konstrukt funktioniert nur in Tests, nicht in für Schleifen

Ein Element kann mithilfe von aus einem Array gelöscht werden löschen Aussage. Das löschen Aussage
kann auch verwendet werden, um den gesamten Inhalt eines Arrays zu löschen, indem einfach das Array angegeben wird
Name ohne Index.

gaffen unterstützt echte mehrdimensionale Arrays. Es ist nicht erforderlich, dass solche Arrays vorhanden sind
„rechteckig“ wie in C oder C++. Zum Beispiel:

ein[1] = 5
ein[2][1] = 6
ein[2][2] = 7

HINWEIS: Möglicherweise müssen Sie es sagen gaffen dass ein Array-Element in Wirklichkeit ein zu verwendendes Subarray ist
es wo gaffen erwartet ein Array (z. B. im zweiten Argument von to). Teilt()). Du kannst tun
Dies erreichen Sie, indem Sie ein Element im Subarray erstellen und es dann mit dem löschen löschen
Aussage.

Variable Typing Und Umwandlung (Conversion)
Variablen und Felder können (Gleitkomma-)Zahlen oder Zeichenfolgen oder beides sein. Wie der Wert
Wie eine Variable interpretiert wird, hängt von ihrem Kontext ab. Bei Verwendung in einem numerischen Ausdruck:
es wird als Zahl behandelt; Wenn es als Zeichenfolge verwendet wird, wird es als Zeichenfolge behandelt.

Um zu erzwingen, dass eine Variable als Zahl behandelt wird, addieren Sie 0 dazu; um zu erzwingen, dass es als a behandelt wird
string, verketten Sie ihn mit dem Null-String.

Nicht initialisierte Variablen haben den numerischen Wert 0 und den Zeichenfolgenwert „“ (die Null oder).
leerer String).

Wenn eine Zeichenfolge in eine Zahl umgewandelt werden muss, erfolgt die Umwandlung mit
strtod(3). Eine Zahl wird mithilfe des Werts von in eine Zeichenfolge umgewandelt CONVFMT als Format
Zeichenfolge für sprintf(3), mit dem numerischen Wert der Variablen als Argument. Jedoch,
Obwohl alle Zahlen in AWK Gleitkommazahlen sind, sind es ganzzahlige Werte immer umgewandelt als
ganze Zahlen. So gegeben

CONVFMT = „%2.2f“
a = 12
b = a ""

Die Variable b hat einen String-Wert von "12" und nicht "12.00".

HINWEIS: Beim Betrieb im POSIX-Modus (z. B. mit dem --posix Option), achten Sie auf dieses Gebietsschema
Einstellungen können die Art und Weise beeinträchtigen, wie Dezimalzahlen behandelt werden: das Dezimaltrennzeichen von
die Zahlen, die Sie füttern gaffen muss dem entsprechen, was Ihr Gebietsschema erwarten würde, sei es ein
Komma (,) oder ein Punkt (.).

Gaffen führt Vergleiche wie folgt durch: Wenn zwei Variablen numerisch sind, werden sie verglichen
numerisch. Wenn ein Wert numerisch ist und der andere einen Zeichenfolgewert hat, der „numerisch“ ist
string“, dann werden Vergleiche auch numerisch durchgeführt. Andernfalls lautet der numerische Wert
in einen String umgewandelt und ein String-Vergleich durchgeführt. Es werden zwei Zeichenfolgen verglichen
Natürlich als Strings.

Beachten Sie, dass Zeichenfolgenkonstanten, wie z "57", sind nicht numerische Zeichenfolgen, sie sind Zeichenfolgen
Konstanten. Die Idee einer „numerischen Zeichenfolge“ gilt nur für Felder, Getline Eingang, DATEINAME,
ARGV Elemente, UMWELT Elemente und die Elemente eines Arrays, das von erstellt wurde Teilt() or
patsplit() Das sind numerische Zeichenfolgen. Die Grundidee ist das Benutzer Eingabe, und nur Benutzer
Eingaben, die numerisch aussehen, sollten auch so behandelt werden.

Oktal und Hexadecimal Konstante
Sie können in Ihrem AWK-Programmquellcode oktale und hexadezimale Konstanten im C-Stil verwenden. Für
Beispiel: der Oktalwert 011 ist gleich dezimal 9und der Hexadezimalwert 0x11 is
gleich dezimal 17.

Schnur Konstante
String-Konstanten in AWK sind Zeichenfolgen, die in doppelte Anführungszeichen eingeschlossen sind (z. B
"Wert"). Innerhalb von Strings, sicher Flucht Sequenzen werden wie in C erkannt. Dies sind:

\\ Ein buchstäblicher Backslash.

\a Das Zeichen „Alarm“; normalerweise das ASCII-BEL-Zeichen.

\b Rücktaste.

\f Formvorschub.

\n Neue Zeile.

\r Wagenrücklauf.

\t Horizontale Registerkarte.

\v Vertikale Registerkarte.

\xhex Ziffern
Das Zeichen, das durch die Folge hexadezimaler Ziffern nach dem dargestellt wird \x. Die
In ISO C werden alle folgenden hexadezimalen Ziffern als Teil des Escape betrachtet
Reihenfolge. (Diese Funktion sollte uns etwas über das Sprachdesign von sagen
Ausschuss.) ZB, „\x1B“ ist das ASCII-ESC-Zeichen (Escapezeichen).

\ddd Das durch die 1-, 2- oder 3-stellige Folge oktaler Ziffern dargestellte Zeichen. Z.B,
"\033" ist das ASCII-ESC-Zeichen (Escapezeichen).

\c Der wörtliche Charakter c.

Die Escape-Sequenzen können auch innerhalb konstanter regulärer Ausdrücke verwendet werden (z. B.
/[ \t\f\n\r\v]/ entspricht Leerzeichen).

Im Kompatibilitätsmodus werden die Zeichen durch oktale und hexadezimale Escapezeichen dargestellt
Sequenzen werden wörtlich behandelt, wenn sie in regulären Ausdruckskonstanten verwendet werden. Daher, /a\52b/
entspricht /a\*b/.

PATTERNS UND MASSNAHMEN


AWK ist eine zeilenorientierte Sprache. Zuerst kommt das Muster und dann die Aktion. Aktion
Aussagen sind beigefügt { und }. Entweder fehlt das Muster oder die Aktion
fehlen, aber natürlich nicht beides. Fehlt das Muster, wird die Aktion ausgeführt
für jeden einzelnen Eingabedatensatz. Eine fehlende Aktion ist gleichbedeutend mit

{ drucken }

Dadurch wird der gesamte Datensatz gedruckt.

Kommentare beginnen mit dem # Zeichen ein und fahren Sie bis zum Ende der Zeile fort. Leerzeilen
kann zur Trennung von Anweisungen verwendet werden. Normalerweise endet eine Anweisung jedoch mit einem Zeilenumbruch.
Dies gilt nicht für Zeilen, die mit einem Komma enden. {, ?, :, &&, oder ||. Zeilen enden mit do
or sonst Außerdem werden ihre Aussagen automatisch in der folgenden Zeile fortgesetzt. In
In anderen Fällen kann eine Zeile fortgesetzt werden, indem sie mit einem „\“ endet. In diesem Fall lautet die neue Zeile
ignoriert.

Mehrere Anweisungen können in einer Zeile zusammengefasst werden, indem sie durch ein „;“ getrennt werden. Dies gilt für
sowohl die Anweisungen innerhalb des Aktionsteils eines Muster-Aktionspaares (der übliche Fall) als auch
zu den Muster-Aktions-Anweisungen selbst.

Patterns
AWK-Muster können eines der folgenden sein:

START
ENDE
ANFANGSDATEI
ENDFILE
/regulär Ausdruck/
relational Ausdruck
Anleitungen && Anleitungen
Anleitungen || Anleitungen
Anleitungen ? Anleitungen : Anleitungen
(Anleitungen)
! Anleitungen
pattern1, pattern2

START und ENDE sind zwei spezielle Arten von Mustern, die nicht anhand der Eingabe getestet werden.
Die Action-Teile von allem START Muster werden zusammengeführt, als ob alle Aussagen vorhanden wären
in einem einzigen geschrieben START Regel. Sie werden ausgeführt, bevor eine der Eingaben gelesen wird.
Ebenso alle ENDE Regeln werden zusammengeführt und ausgeführt, wenn alle Eingaben erschöpft sind (bzw
wenn ein wunsch Anweisung wird ausgeführt). START und ENDE Muster können nicht mit anderen kombiniert werden
Muster in Musterausdrücken. START und ENDE Muster dürfen keine fehlenden Aktionsteile enthalten.

ANFANGSDATEI und ENDFILE sind zusätzliche Sondermuster, deren Körper vorher ausgeführt werden
Lesen des ersten Datensatzes jeder Befehlszeileneingabedatei und nach dem Lesen des letzten Datensatzes
jeder Datei. Im Inneren ANFANGSDATEI Regel, der Wert von FEHLERNO wird die leere Zeichenfolge sein, wenn
Die Datei wurde erfolgreich geöffnet. Andernfalls liegt ein Problem mit der Datei und der Datei vor
Code verwenden soll nächste Datei es zu überspringen. Wenn das nicht geschieht, gaffen produziert sein übliches tödliches Ergebnis
Fehler für Dateien, die nicht geöffnet werden können.

Aussichten für /regulär Ausdruck/ Bei Mustern wird für jede Eingabe die zugehörige Anweisung ausgeführt
Datensatz, der dem regulären Ausdruck entspricht. Reguläre Ausdrücke sind die gleichen wie in
egrep(1) und werden im Folgenden zusammengefasst.

A relational Ausdruck kann jeden der unten im Abschnitt definierten Operatoren verwenden
Aktionen. Diese testen im Allgemeinen, ob bestimmte Felder mit bestimmten regulären Ausdrücken übereinstimmen.

Das &&, || und ! Operatoren sind logisches UND, logisches ODER bzw. logisches NICHT.
wie in C. Sie führen eine Kurzschlussauswertung durch, ebenfalls wie in C, und werden zum Kombinieren mehrerer verwendet
primitive Musterausdrücke. Wie in den meisten Sprachen können Klammern zum Ändern verwendet werden
die Reihenfolge der Auswertung.

Das ?: Der Operator ähnelt dem gleichen Operator in C. Wenn das erste Muster wahr ist, dann ist der
Das zum Testen verwendete Muster ist das zweite Muster, andernfalls das dritte. Nur einer von
das zweite und dritte Muster wird ausgewertet.

Das pattern1, pattern2 Die Form eines Ausdrucks heißt a Angebot Anleitungen. Es passt zu allem
Eingabedatensätze beginnend mit einem übereinstimmenden Datensatz pattern1, und weiter bis zu einem Datensatz
das stimmt überein pattern2, inklusive. Es lässt sich nicht mit anderen Mustern kombinieren
Ausdruck.

Lang Ausdrücke
Reguläre Ausdrücke sind die erweiterte Art in egrep. Sie bestehen aus Charakteren
wie folgt:

c Entspricht dem Nicht-Metazeichen c.

\c Entspricht dem Literalzeichen c.

. Entspricht jedem Zeichen einschließlich Neue Zeile.

^ Entspricht dem Anfang einer Zeichenfolge.

$ Entspricht dem Ende einer Zeichenfolge.

[ABC...] Eine Zeichenliste: entspricht einem der Zeichen ABC.... Sie können Folgendes hinzufügen:
Sie können den Zeichenbereich durch einen Bindestrich voneinander trennen.

[^ABC...] Eine negierte Zeichenliste: Entspricht jedem Zeichen außer ABC....

r1|r2 Abwechslung: passt entweder r1 or r2.

r1r2 Verkettung: Übereinstimmungen r1, und dann r2.

r+ Entspricht einem oder mehreren r'S.

r* Entspricht null oder mehr r'S.

r? Entspricht null oder eins r'S.

(r) Gruppierung: Übereinstimmungen r.

r{n}
r{n,}
r{n,m} Eine oder zwei Zahlen in geschweiften Klammern bezeichnen eine Intervall Ausdruck. Wenn da ist
eine Zahl in den geschweiften Klammern, der vorhergehende reguläre Ausdruck r wird wiederholt n
mal. Wenn zwei Zahlen durch ein Komma getrennt sind, r wird wiederholt n zu m
mal. Wenn eine Zahl gefolgt von einem Komma steht, dann r wird zumindest wiederholt
n Zeiten.

\y Entspricht der leeren Zeichenfolge entweder am Anfang oder am Ende eines Worts.

\B Entspricht der leeren Zeichenfolge innerhalb eines Wortes.

\< Entspricht der leeren Zeichenfolge am Anfang eines Worts.

\> Entspricht der leeren Zeichenfolge am Ende eines Wortes.

\s Entspricht jedem Leerzeichen.

\S Entspricht jedem Zeichen, das kein Leerzeichen ist.

\w Entspricht jedem wortbildenden Zeichen (Buchstabe, Ziffer oder Unterstrich).

\W Entspricht jedem Zeichen, das kein Wortbestandteil ist.

\` Entspricht der leeren Zeichenfolge am Anfang eines Puffers (Zeichenfolge).

\' Entspricht der leeren Zeichenfolge am Ende eines Puffers.

Die Escape-Sequenzen, die in String-Konstanten gültig sind (siehe Schnur Konstante) sind auch
gültig in regulären Ausdrücken.

Charakter Unterricht sind eine im POSIX-Standard eingeführte Funktion. Eine Zeichenklasse ist eine
spezielle Notation zur Beschreibung von Listen von Zeichen, die ein bestimmtes Attribut haben, aber
wobei die tatsächlichen Charaktere selbst von Land zu Land und/oder von Land zu Land variieren können
Zeichensatz zu Zeichensatz. Zum Beispiel die Vorstellung, was ein Alphabet ist
Der Charakter unterscheidet sich in den USA und in Frankreich.

Eine Zeichenklasse ist nur in einem regulären Ausdruck gültig innerhalb die Klammern eines Zeichens
Liste. Charakterklassen bestehen aus [:, ein Schlüsselwort, das die Klasse bezeichnet, und :]dem „Vermischten Geschmack“. Seine
Vom POSIX-Standard definierte Zeichenklassen sind:

[:alnum:] Alphanumerische Zeichen.

[:Alpha:] Alphabetische Zeichen.

[:leer:] Leerzeichen oder Tabulatorzeichen.

[:Strg:] Steuerzeichen.

[:Ziffer:] Numerische Zeichen.

[:Graph:] Zeichen, die sowohl druckbar als auch sichtbar sind. (Ein Leerzeichen ist druckbar, aber nicht
sichtbar, während ein a ist beides.)

[:untere:] Alphabetische Kleinbuchstaben.

[:drucken:] Druckbare Zeichen (Zeichen, die keine Steuerzeichen sind.)

[:punkt:] Satzzeichen (Zeichen, die keine Buchstaben, Ziffern oder Steuerelemente sind).
Zeichen oder Leerzeichen).

[:Platz:] Leerzeichen (z. B. Leerzeichen, Tabulatorzeichen und Formularvorschub, um nur einige zu nennen).

[:Oberer, höher:] Alphabetische Großbuchstaben.

[:xStelle:] Zeichen, die hexadezimale Ziffern sind.

Vor dem POSIX-Standard mussten Sie beispielsweise alphanumerische Zeichen abgleichen
musste schreiben /[A-Za-z0-9]/. Wenn Ihr Zeichensatz andere alphabetische Zeichen enthielt,
Dies würde nicht mit ihnen übereinstimmen, und wenn Ihr Zeichensatz anders als ASCII sortiert wäre, wäre dies
stimmt möglicherweise nicht einmal mit den alphanumerischen ASCII-Zeichen überein. Mit den POSIX-Zeichenklassen
Du kannst schreiben /[[:alnum:]]/, und dies entspricht den alphabetischen und numerischen Zeichen in
Ihr Zeichensatz, egal was es ist.

In Charakterlisten können zwei zusätzliche Sondersequenzen erscheinen. Diese gelten für Nicht-ASCII
Zeichensätze, die einzelne Symbole enthalten können (genannt Zusammentragen Elemente) das sind
dargestellt mit mehr als einem Zeichen, sowie mehreren Zeichen, die es sind
Äquivalent für Zusammentragenoder Sortierzwecke. (Z. B. im Französischen ein einfaches „e“ und a
„`“ mit Gravis-Akzent sind gleichwertig.)

Symbole sortieren
Ein Sortiersymbol ist ein aus mehreren Zeichen bestehendes Sortierelement [. und .].
Zum Beispiel, wenn ch ist also ein Sortierelement [[.CH.]] ist ein regulärer Ausdruck
das diesem Sortierelement entspricht, while [CH] ist ein regulärer Ausdruck, der
passt entweder c or h.

Äquivalenzklassen
Eine Äquivalenzklasse ist ein gebietsschemaspezifischer Name für eine Liste von Zeichen
Äquivalent. Der Name ist eingeschlossen [= und =]. Zum Beispiel der Name e könnte sein,
Wird verwendet, um alle „e“, „´“ und „`“ darzustellen. In diesem Fall, [[=e=]] ist eine regelmäßige
Ausdruck, der einem von entspricht e, , oder e`.

Diese Funktionen sind in nicht englischsprachigen Regionen sehr wertvoll. Die Bibliothek funktioniert
zur Verbesserung der Gesundheitsgerechtigkeit gaffen Wird für den Abgleich regulärer Ausdrücke verwendet und erkennt derzeit nur POSIX-Zeichen
Klassen; Sie erkennen keine Sortiersymbole oder Äquivalenzklassen.

Das \y, \B, \<, \>, \s, \S, \w, \W, \` und \' Operatoren sind spezifisch für gaffen;; Sie sind
Erweiterungen basierend auf Funktionen in den GNU-Bibliotheken für reguläre Ausdrücke.

Die verschiedenen Befehlszeilenoptionen steuern, wie gaffen interpretiert Zeichen in regulärer Form
Ausdrücke.

Keine Optionen
Im Standardfall gilt: gaffen bietet alle Möglichkeiten regulärer POSIX-Ausdrücke
und die oben beschriebenen GNU-Operatoren für reguläre Ausdrücke.

--posix
Es werden nur reguläre POSIX-Ausdrücke unterstützt, die GNU-Operatoren sind nicht speziell.
(Z.B, \w entspricht einem Literal w).

--traditionell
Traditionelles UNIX awk Reguläre Ausdrücke werden abgeglichen. Die GNU-Operatoren sind es nicht
Sonder- und Intervallausdrücke sind nicht verfügbar. Durch Oktal beschriebene Zeichen
und hexadezimale Escape-Sequenzen werden wörtlich behandelt, auch wenn sie darstellen
Metazeichen für reguläre Ausdrücke.

--re-interval
Erlauben Sie Intervallausdrücke in regulären Ausdrücken, auch wenn --traditionell wurde
unter der Voraussetzung.

Aktionen
Aktionsanweisungen werden in geschweifte Klammern eingeschlossen. { und }. Aktionsanweisungen bestehen aus dem Üblichen
Zuweisungs-, Bedingungs- und Schleifenanweisungen, die in den meisten Sprachen vorkommen. Die Betreiber,
Die verfügbaren Steueranweisungen und Eingabe-/Ausgabeanweisungen sind denen in C nachempfunden.

Betreiber
Die Operatoren in AWK sind in der Reihenfolge absteigender Priorität:

(...) Gruppierung

$ Feldreferenz.

++ -- Inkrementieren und Dekrementieren, sowohl Präfix als auch Postfix.

^ Potenzierung (** kann auch verwendet werden, und **= für den Zuweisungsoperator).

+ - ! Unäres Plus, unäres Minus und logische Negation.

* / % Multiplikation, Division und Modul.

+ - Addition und Subtraktion.

Raum String-Verkettung.

| |& Piped I/O für Getline, drucken und printf.

< > <= >= != ==
Die regulären Vergleichsoperatoren.

~ !~ Übereinstimmung mit regulären Ausdrücken, negierte Übereinstimmung. HINWEIS: Verwenden Sie keine konstante Regel
Ausdruck (/ foo /) auf der linken Seite von a ~ or !~. Benutzen Sie nur eines auf dem
rechte Seite. Der Ausdruck / foo / ~ exp hat die gleiche Bedeutung wie (($0 ~
/foo/) ~ exp). Das ist normalerweise nicht was Sie wollen.

in Array-Mitgliedschaft.

&& Logisches UND.

|| Logisches ODER.

?: Der C-bedingte Ausdruck. Das hat die Form Ausdruck1 ? Ausdruck2 : Ausdruck3. Wenn
Ausdruck1 wahr ist, ist der Wert des Ausdrucks Ausdruck2, sonst ist es Ausdruck3.
Nur einer von Ausdruck2 und Ausdruck3 ausgewertet wird.

= += -= *= /= %= ^=
Abtretung. Beides absolute Zuordnung (jung = Wert) und Bedienerzuordnung
(die anderen Formen) werden unterstützt.

Control Statements
Die Steueranweisungen lauten wie folgt:

if (Zustand) Aussage [ sonst Aussage ]
während (Zustand) Aussage
do Aussage während (Zustand)
für (Ausdruck1; Ausdruck2; Ausdruck3) Aussage
für (jung in Array) Aussage
brechen
fortsetzen
löschen Array[Index]
löschen Array
wunsch [ Ausdruck ]
{ Aussagen }
wechseln (Ausdruck) {
Häuser Wert|Regex : Aussage
...
[ Standard: Aussage ]
}

I / O Statements
Die Eingabe-/Ausgabeanweisungen lauten wie folgt:

nah dran(Datei [, wie]) Datei, Pipe oder Co-Prozess schließen. Die Wahl wie sollte nur sein
Wird verwendet, wenn ein Ende einer Zweiwegeleitung an einen Co-Prozess angeschlossen wird. Es
muss ebenfalls ein Stringwert sein "zu" or "von".

Getline Sept $0 ab nächstem Eingabedatensatz; Satz NF, NR, FNR, RT.

Getline <Datei Sept $0 ab nächster Aufnahme von Datei; einstellen NF, RT.

Getline jung Sept jung ab nächstem Eingabedatensatz; Satz NR, FNR, RT.

Getline jung <Datei Sept jung ab nächster Aufnahme von Datei, RT.

Befehl | Getline [jung]
Führen Sie Befehl Leiten Sie den Ausgang entweder hinein $0 or jung, wie oben, und
RT.

Befehl |& Getline [jung]
Führen Sie Befehl als Co-Prozess, in den die Ausgabe weitergeleitet wird $0 or jung,
wie oben, und RT. Co-Prozesse sind a gaffen Verlängerung. (Befehl kann
auch eine Steckdose sein. Siehe den Unterabschnitt Spezial Reichen Sie das Namen, unter.)

weiter Stoppen Sie die Verarbeitung des aktuellen Eingabedatensatzes. Der nächste Eingabedatensatz ist
Das Lesen und Verarbeiten beginnt erneut mit dem ersten Muster im AWK
Programm. Wenn das Ende der Eingabedaten erreicht ist, gaffen führt alle aus
ENDE Regeln).

nächste Datei Stoppen Sie die Verarbeitung der aktuellen Eingabedatei. Der nächste gelesene Eingabedatensatz
stammt aus der nächsten Eingabedatei. DATEINAME und ARGIND werden aktualisiert,
FNR wird auf 1 zurückgesetzt und die Verarbeitung beginnt erneut mit dem ersten Muster
im AWK-Programm. Wenn das Ende der Eingabedaten erreicht ist, gaffen
führt alle aus ENDE Regeln).

drucken Drucken Sie den aktuellen Datensatz. Der Ausgabesatz wird mit abgeschlossen
Wert von ORS.

drucken ausdruckliste Ausdrücke drucken. Jeder Ausdruck wird durch den Wert von getrennt
OFS. Der Ausgabesatz wird mit dem Wert von abgeschlossen ORS.

drucken ausdruckliste >Datei Ausdrücke drucken auf Datei. Jeder Ausdruck wird durch getrennt
Wert von OFS. Der Ausgabesatz wird mit dem Wert von abgeschlossen
ORS.

printf fmt, ausdruckliste Formatieren und drucken. Sehen Das printf Erklärung, Unten.

printf fmt, ausdruckliste >Datei
Formatieren und weiterdrucken Datei.

System(cmd-Zeile) Führen Sie den Befehl aus cmd-Zeile, und geben Sie den Exit-Status zurück. (Das vielleicht
(auf Nicht-POSIX-Systemen nicht verfügbar sein.)

erröten ([Datei]) Leeren Sie alle Puffer, die mit der geöffneten Ausgabedatei oder Pipe verknüpft sind Datei.
If Datei fehlt oder wenn es sich um die Nullzeichenfolge handelt, dann leeren Sie alles offen
Ausgabedateien und Pipes.

Zusätzliche Ausgabeumleitungen sind zulässig drucken und printf.

drucken ... >> Datei
Hängt die Ausgabe an die an Datei.

drucken ... | Befehl
Schreibt auf eine Pfeife.

drucken ... |& Befehl
Sendet Daten an einen Co-Prozess oder Socket. (Siehe auch den Unterabschnitt Spezial Reichen Sie das Namen,
unten.)

Das Getline Der Befehl gibt 1 bei Erfolg, 0 am Ende der Datei und -1 bei einem Fehler zurück. Auf ein
Error, FEHLERNO wird auf eine Zeichenfolge gesetzt, die das Problem beschreibt.

HINWEIS: Ein Fehler beim Öffnen eines bidirektionalen Sockets führt dazu, dass ein nicht schwerwiegender Fehler zurückgegeben wird
die aufrufende Funktion. Bei Verwendung einer Pipe, eines Co-Prozesses oder eines Sockets GetlineOder aus drucken or
printf innerhalb einer Schleife, Sie sollen - schließen() um neue Instanzen des Befehls zu erstellen oder
Steckdose. AWK schließt Pipes, Sockets oder Co-Prozesse nicht automatisch, wenn sie zurückkehren
EOF.

Das printf Erklärung
Die AWK-Versionen des printf Aussage und sprintf() Funktion (siehe unten) akzeptieren die
Folgende Konvertierungsspezifikationsformate:

%c Ein einzelner Charakter. Wenn das Argument für verwendet wird %c numerisch ist, wird es als a behandelt
Charakter und gedruckt. Andernfalls wird davon ausgegangen, dass das Argument eine Zeichenfolge ist und die
nur das erste Zeichen dieser Zeichenfolge wird gedruckt.

%d, %i Eine Dezimalzahl (der ganzzahlige Teil).

%e, %E Eine Gleitkommazahl der Form [-]d.dddddde[+-]dddem „Vermischten Geschmack“. Seine %E Format verwendet E
statt e.

%f, %F Eine Gleitkommazahl der Form [-]ddd.dddddd. Sofern die Systembibliothek dies unterstützt
es %F ist ebenfalls verfügbar. Das ist wie %f, verwendet jedoch Großbuchstaben für Sonderzeichen
„keine Zahl“ und „unendlich“-Werte. Wenn %F ist nicht verfügbar, gaffen verwendet %f.

%g, %G Verwenden Sie die %e or %f Konvertierung, je nachdem, welcher Zeitraum kürzer ist, mit nicht signifikanten Nullen
unterdrückt. Die %G Format verwendet %E statt %e.

%o Eine vorzeichenlose Oktalzahl (auch eine ganze Zahl).

%u Eine vorzeichenlose Dezimalzahl (wiederum eine ganze Zahl).

%s Eine Zeichenfolge.

%x, %X Eine vorzeichenlose Hexadezimalzahl (eine ganze Zahl). Der %X Format verwendet ABCDEF statt
abcdef.

%% Ein einzelner % Charakter; Es wird kein Argument konvertiert.

Optional können weitere Parameter dazwischen liegen % und der Kontrollbrief:

zählen$ Verwenden Sie das zählen'th Argument an dieser Stelle in der Formatierung. Dies nennt man a
positionell Bezeichner und ist hauptsächlich für die Verwendung in übersetzten Versionen von gedacht
Formatzeichenfolgen, nicht im Originaltext eines AWK-Programms. es ist ein gaffen
Erweiterung.

- Der Ausdruck sollte innerhalb seines Feldes linksbündig ausgerichtet sein.

Raum Stellen Sie bei numerischen Konvertierungen positiven Werten ein Leerzeichen voran und negativen Werten
mit einem Minuszeichen.

+ Das Pluszeichen vor dem Breitenmodifikator (siehe unten) besagt, dass immer a angegeben werden soll
Vorzeichen für numerische Konvertierungen, auch wenn die zu formatierenden Daten positiv sind. Der +
überschreibt den Raummodifikator.

# Verwenden Sie für bestimmte Kontrollbriefe eine „alternative Form“. Für %o, liefern Sie einen führenden
null. Für %x und %X, liefern Sie einen führenden 0x or 0X für ein Ergebnis ungleich Null. Für %e, %E,
%f und %F, das Ergebnis enthält immer einen Dezimalpunkt. Für %g und %G, nachlaufend
Nullen werden nicht aus dem Ergebnis entfernt.

0 Ein führender 0 (Null) fungiert als Flag, das angibt, dass die Ausgabe mit aufgefüllt werden soll
Nullen statt Leerzeichen. Dies gilt nur für die numerischen Ausgabeformate. Das
Das Flag hat nur dann eine Wirkung, wenn die Feldbreite breiter ist als der auszugebende Wert.

' Ein einfaches Anführungszeichen gibt Anweisungen gaffen um das Tausendertrennzeichen des Gebietsschemas einzufügen
Zeichen in Dezimalzahlen umzuwandeln und auch den Dezimalpunkt des Gebietsschemas zu verwenden
Zeichen mit Gleitkommaformaten. Dies erfordert die korrekte Unterstützung des Gebietsschemas im
C-Bibliothek und in der Definition des aktuellen Gebietsschemas.

Breite Das Feld sollte auf diese Breite aufgefüllt werden. Das Feld ist normalerweise mit aufgefüllt
Räume. Mit dem 0 Flag, es wird mit Nullen aufgefüllt.

.vor Eine Zahl, die die beim Drucken zu verwendende Genauigkeit angibt. Für die %e, %E, %f und
%F, Formate, dies gibt die Anzahl der Ziffern an, die rechts davon gedruckt werden sollen
der Dezimalpunkt. Für die %g und %G Formate gibt es die maximale Anzahl an
wichtige Ziffer. Für die %d, %i, %o, %u, %x und %X Formate, es gibt die an
Mindestanzahl der zu druckenden Ziffern. Für %s, es gibt die maximale Anzahl an
Zeichen aus der Zeichenfolge, die gedruckt werden sollen.

Die Dynamik Breite und vor Fähigkeiten des ISO C printf () Routinen werden unterstützt. A *
anstelle von entweder dem Breite or vor Spezifikationen bewirkt, dass deren Werte übernommen werden
die Argumentliste zu printf or sprintf(). So verwenden Sie einen Positionsspezifizierer mit einer Dynamik
Breite oder Präzision, liefern Sie die zählen$ nach dem * in der Formatzeichenfolge. Zum Beispiel,
„%3$*2$.*1$s“.

Spezial Reichen Sie das Namen
Bei der E/A-Umleitung von beiden drucken or printf in eine Datei, oder per Getline von einem
Datei, gaffen erkennt intern bestimmte spezielle Dateinamen. Diese Dateinamen ermöglichen den Zugriff
um geerbte Dateideskriptoren zu öffnen gaffenist der übergeordnete Prozess (normalerweise die Shell). Diese
Dateinamen können auch in der Befehlszeile zum Benennen von Datendateien verwendet werden. Die Dateinamen sind:

- Die Standardeingabe.

/dev/stdin Die Standardeingabe.

/dev/stdout Die Standardausgabe.

/dev/stderr Die Standardfehlerausgabe.

/dev/fd/n Die mit dem offenen Dateideskriptor verknüpfte Datei n.

Diese sind besonders nützlich für Fehlermeldungen. Zum Beispiel:

drucken "Sie blies es!" > "/dev/stderr"

wohingegen Sie es sonst verwenden müssten

drucken "Sie blies es!" | "Katze 1>&2"

Die folgenden speziellen Dateinamen können mit verwendet werden |& Co-Prozessoperator zum Erstellen
TCP/IP-Netzwerkverbindungen:

/inet/tcp/lport/rhost/rport
/inet4/tcp/lport/rhost/rport
/inet6/tcp/lport/rhost/rport
Dateien für eine TCP/IP-Verbindung am lokalen Port lport zum Remote-Host rhost auf Fernbedienung
port rport. Verwenden Sie einen Port von 0 Damit das System einen Port auswählt. Verwenden /inet4 zu zwingen
eine IPv4-Verbindung und /inet6 um eine IPv6-Verbindung zu erzwingen. Schmucklos /inet verwendet das
Systemstandard (höchstwahrscheinlich IPv4).

/inet/udp/lport/rhost/rport
/inet4/udp/lport/rhost/rport
/inet6/udp/lport/rhost/rport
Ähnlich, aber verwenden Sie UDP/IP anstelle von TCP/IP.

Numerisch Funktionen
AWK verfügt über die folgenden integrierten Rechenfunktionen:

atan2(y, x) Gibt den Arkustangens von zurück y / x im Bogenmaß.

cos (ausdr) Gib den Kosinus von zurück ausdr, also im Bogenmaß.

exp(ausdr) Die Exponentialfunktion.

int (ausdr) Auf Ganzzahl kürzen.

Protokoll(ausdr) Die natürliche Logarithmusfunktion.

rand () Gibt eine Zufallszahl zurück N, zwischen 0 und 1, so dass 0 ≤ N <1.

Sünde(ausdr) Gibt den Sinus von zurück ausdr, also im Bogenmaß.

Quadrat (ausdr) Geben Sie die Quadratwurzel von zurück ausdr.

Sand([ausdr]) Verwenden Sie die ausdr als neuer Startwert für den Zufallszahlengenerator. Wenn nein ausdr is
vorausgesetzt, nutzen Sie die Tageszeit. Gibt den vorherigen Startwert für den Zufall zurück
Zahlengenerator.

Schnur Funktionen
Gaffen verfügt über die folgenden integrierten String-Funktionen:

sortieren(s [, d [, wie]]) Gibt die Anzahl der Elemente im Quellarray zurück s. Sortieren Sie die
Inhalt von s Verwendung von gaffen's normale Regeln zum Vergleichen von Werten, und
Ersetzen Sie die Indizes der sortierten Werte s mit sequentiellem
Ganzzahlen beginnend mit 1. Wenn das optionale Zielarray d is
angegeben, erstes Duplikat s in d, und dann sortieren d, etwas verlassen
Indizes des Quellarrays s unverändert. Die optionale Zeichenfolge wie
steuert die Richtung und den Vergleichsmodus. Gültige Werte für
wie sind beliebige der Zeichenfolgen, für die gültig ist PROCINFO["sorted_in"]. Es
kann auch der Name einer benutzerdefinierten Vergleichsfunktion sein als
beschrieben in PROCINFO["sorted_in"].

sortiert(s [, d [, wie]])
Gibt die Anzahl der Elemente im Quellarray zurück s. Das Verhalten
ist das gleiche wie das von sortieren(), außer dass das Array Indizes sind
Wird zum Sortieren verwendet, nicht die Array-Werte. Wenn Sie fertig sind, ist das Array
numerisch indiziert und die Werte entsprechen denen des Originals
Indizes. Die ursprünglichen Werte gehen verloren; sorgen also für eine Sekunde
Array, wenn Sie das Original beibehalten möchten. Der Zweck der
optionale Zeichenfolge wie ist das gleiche wie in beschrieben sortieren() zu teilen.

gensub(r, s, h [, t]) Suchen Sie die Zielzeichenfolge t für Übereinstimmungen des regulären Ausdrucks
r. Wenn h ist eine Zeichenfolge, die mit beginnt g or G, dann alles ersetzen
Spiele von r mit s. Andernfalls, h ist eine Zahl, die angibt, welche
Spiel von r ersetzen. Wenn t nicht im Lieferumfang enthalten, verwenden $0 stattdessen.
Im Ersatztext s, der Ablauf \n, Wobei n ist eine Ziffer
Von 1 bis 9 kann verwendet werden, um nur den passenden Text anzugeben
n'ter in Klammern gesetzter Unterausdruck. Der Ablauf \0 representiert
der gesamte übereinstimmende Text, ebenso wie das Zeichen &. nicht wie sub()
und gsub(), wird die geänderte Zeichenfolge als Ergebnis zurückgegeben
Funktion und die ursprüngliche Zielzeichenfolge ist nicht geändert.

gsub(r, s [, t]) Für jeden Teilstring, der mit dem regulären Ausdruck übereinstimmt r in der Zeichenfolge
t, ersetzen Sie die Zeichenfolge s, und geben Sie die Anzahl von zurück
Substitutionen. Wenn t nicht im Lieferumfang enthalten, verwenden $0Eine & der
Der Ersatztext wird durch den tatsächlich vorhandenen Text ersetzt
abgestimmt. Verwenden \& um ein Literal zu bekommen &. (Dies muss eingegeben werden als
„\\&“; sehen GAFFEN: Effektiv AWK Programmierung für eine ausführlichere Diskussion
der Regeln für &'s und Backslashes im Ersetzungstext von
sub(), gsub() und gensub().)

Index(s, t) Gibt den Index der Zeichenfolge zurück t in der Zeichenfolge s, oder 0, wenn t ist nicht
gegenwärtig. (Dies bedeutet, dass Zeichenindizes bei eins beginnen.) Es
ist ein schwerwiegender Fehler bei der Verwendung einer Regexp-Konstante t.

Länge([s]) Gibt die Länge der Zeichenfolge zurück soder die Länge von $0 if s ist nicht
geliefert. Als nicht standardmäßige Erweiterung mit einem Array-Argument,
Länge() gibt die Anzahl der Elemente im Array zurück.

Spiel(s, r [, a]) Geben Sie die Position zurück s wobei der reguläre Ausdruck r auftritt, oder
0 wenn r nicht vorhanden ist, und legen Sie die Werte von fest RSTART und LÄNGE.
Beachten Sie, dass die Argumentreihenfolge dieselbe ist wie für ~ Operator:
str ~ re. Wenn Array a wird gestellt, a wird gelöscht und dann Elemente
1 durch n sind mit den Portionen gefüllt s das passt zum
entsprechender in Klammern gesetzter Unterausdruck in r. Das 0. Element
of a enthält den Teil von s vom gesamten Stammspieler abgeglichen
Ausdruck r. Indizes a[n, "Start"] und a[n, "Länge"]
Geben Sie den Startindex in der Zeichenfolge bzw. die Länge an.
jedes passenden Teilstrings.

patsplit(s, a [, r [, seps]])
Teilen Sie die Zeichenfolge s in das Array a und das Trennzeichen-Array seps
auf den regulären Ausdruck rund gibt die Anzahl der Felder zurück.
Elementwerte sind die Teile von s das passte r. Der Wert von
seps[i] ist das Trennzeichen, das davor erschien a[i+ 1]. Wenn r
wurde weggelassen, FPAT wird stattdessen verwendet. Die Arrays a und seps sind
zuerst geklärt. Die Aufteilung verhält sich identisch zur Feldaufteilung
mit FPAT, oben beschrieben.

Teilt(s, a [, r [, seps]])
Teilen Sie die Zeichenfolge s in das Array a und das Trennzeichen-Array seps
auf den regulären Ausdruck rund gibt die Anzahl der Felder zurück. Wenn
r wurde weggelassen, FS wird stattdessen verwendet. Die Arrays a und seps sind
zuerst geklärt. seps[i] ist das Feldtrennzeichen, mit dem übereinstimmt r
zwischen a[i] und a[i+ 1]. Wenn r ist ein einzelnes Leerzeichen, dann führend
Leerzeichen in s geht in das zusätzliche Array-Element seps[0] und
Nachfolgendes Leerzeichen geht in das zusätzliche Array-Element seps[n],
woher n ist der Rückgabewert von Teilt(s, a, r, seps). Aufteilen
verhält sich identisch mit der oben beschriebenen Feldaufteilung.

sprintf (fmt, ausdruckliste) Print ausdruckliste nach fmtund geben Sie die resultierende Zeichenfolge zurück.

strtonum(str) Untersuchen strund gibt seinen numerischen Wert zurück. Wenn str beginnt mit a
führenden 0, behandeln Sie es als Oktalzahl. Wenn str beginnt mit a
führenden 0x or 0X, behandeln Sie es als Hexadezimalzahl. Ansonsten,
Nehmen wir an, es handelt sich um eine Dezimalzahl.

unter (r, s [, t]) Genau wie gsub(), aber ersetzen Sie nur den ersten passenden Teilstring.

Substr(s, i [, n]) Geben Sie höchstens das zurück n-Zeichen-Teilzeichenfolge von s ab i. Wenn n
weggelassen wird, verwenden Sie den Rest von s.

zu senken(str) Gibt eine Kopie der Zeichenfolge zurück str, mit allen Großbuchstaben
in str in die entsprechenden Kleinbuchstaben übersetzt.
Nicht-alphabetische Zeichen bleiben unverändert.

toupper (str) Gibt eine Kopie der Zeichenfolge zurück str, mit allen Kleinbuchstaben
in str in die entsprechenden Großbuchstaben übersetzt.
Nicht-alphabetische Zeichen bleiben unverändert.

Gaffen ist Multibyte-fähig. Das bedeutet, dass Index(), Länge(), substr () und Spiel() Alle Arbeit
in Bezug auf Zeichen, nicht in Bytes.

Uhrzeit Funktionen
Denn einer der Hauptzwecke von AWK-Programmen ist die Verarbeitung von Protokolldateien, die Zeit enthalten
Stempelinformationen, gaffen bietet die folgenden Funktionen zum Erhalten von Zeitstempeln und
sie zu formatieren.

mktime(Datumsspezifikation)
Wende Datumsspezifikation in einen Zeitstempel der gleichen Form wie zurückgegeben von systime() und
das Ergebnis zurückgeben. Der Datumsspezifikation ist ein String der Form YYYY MM DD HH MM SS[
Sommerzeit]. Der Inhalt der Zeichenfolge besteht aus sechs oder sieben Zahlen
bzw. das ganze Jahr inklusive Jahrhundert, der Monat von 1 bis 12, der Tag von
der Monat von 1 bis 31, die Stunde des Tages von 0 bis 23, die Minute von 0 bis
59, die Sekunde von 0 bis 60 und eine optionale Sommerzeitflagge. Die Werte
dieser Zahlen müssen nicht innerhalb der angegebenen Bereiche liegen; zum Beispiel eine Stunde
von -1 bedeutet 1 Stunde vor Mitternacht. Der gregorianische Kalender mit Ursprung Null ist
angenommen, wobei Jahr 0 vor Jahr 1 und Jahr -1 vor Jahr 0 liegt. Die Zeit ist
Es wird davon ausgegangen, dass es sich um die lokale Zeitzone handelt. Wenn die Sommerzeitflagge positiv ist,
Es wird davon ausgegangen, dass es sich bei der Zeit um Sommerzeit handelt. Wenn Null, wird die Zeit angenommen
Standardzeit sein; und wenn negativ (die Standardeinstellung), mktime() versucht festzustellen
ob für die angegebene Zeit Sommerzeit gilt. Wenn Datumsspezifikation
nicht genügend Elemente enthält oder die resultierende Zeit außerhalb des zulässigen Bereichs liegt,
mktime() gibt -1 zurück.

strftime([Format [, Zeitstempel[, UTC-Flagge]]])
Format Zeitstempel gemäß der Spezifikation in Format. Wenn UTC-Flagge is
vorhanden und ungleich Null oder ungleich Null ist, ist das Ergebnis in UTC, andernfalls das Ergebnis
ist in Ortszeit. Der Zeitstempel sollte die gleiche Form haben wie zurückgegeben von
systime(). Wenn Zeitstempel Fehlt die Angabe, wird die aktuelle Tageszeit verwendet. Wenn Format
fehlt, ein Standardformat, das der Ausgabe von entspricht Datum(1) verwendet wird. Der
Das Standardformat ist verfügbar in PROCINFO["strftime"]. Siehe die Spezifikation für
strftime () Funktion in ISO C für die garantierten Formatkonvertierungen
zu Verfügung stehen.

systime() Gibt die aktuelle Tageszeit als Anzahl der Sekunden seit der Epoche zurück
(1970-01-01 00:00:00 UTC auf POSIX-Systemen).

Bit Manipulationen Funktionen
Gaffen stellt die folgenden Bitmanipulationsfunktionen bereit. Sie funktionieren durch die Umwandlung von Doppel-
Präzisions-Gleitkommawerte zu uintmax_t Ganzzahlen, Ausführen der Operation und dann
Konvertieren des Ergebnisses zurück in Gleitkomma. Die Funktionen sind:

und(v1, v2 [, ...]) Gibt das bitweise UND der in der Argumentliste bereitgestellten Werte zurück.
Es müssen mindestens zwei sein.

kompl(Welle) Gibt das bitweise Komplement von zurück Welle.

lshift(Welle, zählen) Geben Sie den Wert von zurück Welle, nach links verschoben um zählen Bits.

oder(v1, v2 [, ...]) Gibt das bitweise ODER der in der Argumentliste bereitgestellten Werte zurück.
Es müssen mindestens zwei sein.

rshift(Welle, zählen) Geben Sie den Wert von zurück Welle, nach rechts verschoben zählen Bits.

xor(v1, v2 [, ...]) Gibt das bitweise XOR der in der Argumentliste bereitgestellten Werte zurück.
Es müssen mindestens zwei sein.

Typ Funktion
Die folgende Funktion ist für die Verwendung mit mehrdimensionalen Arrays vorgesehen.

isarray(x)
Gibt true zurück, wenn x ist ein Array, andernfalls falsch.

Internationalisierung Funktionen
Die folgenden Funktionen können in Ihrem AWK-Programm zum Übersetzen von Zeichenfolgen verwendet werden
zur Laufzeit. Ausführliche Informationen finden Sie unter GAFFEN: Effektiv AWK Programmierung.

bindtextdomain(Verzeichnis [, Domain])
Geben Sie das Verzeichnis an, in dem gaffen sucht den .gmo Dateien, falls dies nicht der Fall ist oder
können nicht an den „Standard“-Standorten platziert werden (z. B. während des Tests). Es kehrt zurück
das Verzeichnis wo Domain ist „gebunden“.
Der Standard Domain ist der Wert von TEXTDOMAIN. Wenn Verzeichnis ist die Nullzeichenfolge
(""), dann bindtextdomain() gibt die aktuelle Bindung für das angegebene zurück Domain.

dcgettext(Schnur [, Domain [, Kategorie]])
Geben Sie die Übersetzung von zurück Schnur im Textbereich Domain für die Gebietsschemakategorie
Kategorie. Der Standardwert für Domain ist der aktuelle Wert von TEXTDOMAINdem „Vermischten Geschmack“. Seine
Standardwert für Kategorie is „LC_MESSAGES“.
Wenn Sie einen Wert für angeben Kategorie, es muss eine Zeichenfolge sein, die einer der bekannten Zeichenfolgen entspricht
Gebietsschema-Kategorien beschrieben in GAFFEN: Effektiv AWK Programmierung. Sie müssen auch
Geben Sie eine Textdomäne an. Verwenden TEXTDOMAIN wenn Sie die aktuelle Domain verwenden möchten.

dcngettext(string1, string2, Anzahl [, Domain [, Kategorie]])
Geben Sie die Pluralform zurück, die für verwendet wird Anzahl der Übersetzung von string1 und string2 in
Textdomäne Domain für die Gebietsschemakategorie Kategorie. Der Standardwert für Domain is
der aktuelle Wert von TEXTDOMAIN. Der Standardwert für Kategorie is „LC_MESSAGES“.
Wenn Sie einen Wert für angeben Kategorie, es muss eine Zeichenfolge sein, die einer der bekannten Zeichenfolgen entspricht
Gebietsschema-Kategorien beschrieben in GAFFEN: Effektiv AWK Programmierung. Sie müssen auch
Geben Sie eine Textdomäne an. Verwenden TEXTDOMAIN wenn Sie die aktuelle Domain verwenden möchten.

BENUTZERDEFINIERTE FUNKTIONEN


Funktionen in AWK sind wie folgt definiert:

Funktion Name(Parameter Liste) { Aussagen }

Funktionen werden ausgeführt, wenn sie innerhalb von Ausdrücken in Mustern oder aufgerufen werden
Aktionen. Die im Funktionsaufruf bereitgestellten tatsächlichen Parameter werden zur Instanziierung verwendet
in der Funktion deklarierte formale Parameter. Arrays werden als Referenz übergeben, andere
Variablen werden als Wert übergeben.

Da Funktionen ursprünglich nicht Teil der AWK-Sprache waren, ist die Bereitstellung für lokale
Variablen sind ziemlich umständlich: Sie werden als zusätzliche Parameter in der Parameterliste deklariert.
Die Konvention besteht darin, lokale Variablen von realen Parametern durch zusätzliche Leerzeichen in zu trennen
Parameterliste. Zum Beispiel:

Funktion f(p, q, a, b) # a und b sind aus einer regionalen
{
...
}

/ABC/ { ... ; f(1, 2) ; ... }

Die linke Klammer in einem Funktionsaufruf ist erforderlich, um unmittelbar auf die Funktion zu folgen
Name, ohne dazwischen liegende Leerzeichen. Dies vermeidet eine syntaktische Mehrdeutigkeit mit dem
Verkettungsoperator. Diese Einschränkung gilt nicht für die aufgeführten integrierten Funktionen
zu teilen.

Funktionen können sich gegenseitig aufrufen und rekursiv sein. Als lokal verwendete Funktionsparameter
Variablen werden beim Funktionsaufruf mit der Nullzeichenfolge und der Zahl Null initialisiert.

Verwenden Sie die Rückkehr ausdr um einen Wert von einer Funktion zurückzugeben. Der Rückgabewert ist undefiniert, wenn nein
Wert bereitgestellt wird, oder wenn die Funktion durch „Abfallen“ vom Ende zurückkehrt.

Als ein gaffen Erweiterung können Funktionen indirekt aufgerufen werden. Vergeben Sie dazu den Namen von
die aufzurufende Funktion als String für eine Variable. Dann verwenden Sie die Variable so, als ob sie es wäre
waren der Name einer Funktion mit dem Präfix an @ unterschreiben, etwa so:
Funktion meinefunktion()
{
drucken „meine Funktion angerufen"
...
}

{ ...
the_func = „meine Funktion“
@the_func() # rufen Sie uns an! bis the_func zu meinefunktion
...
}
Ab Version 4.1.2 funktioniert dies mit benutzerdefinierten Funktionen, integrierten Funktionen und
Erweiterungsfunktionen.

If --Fussel wurde zur Verfügung gestellt, gaffen warnt vor Aufrufen undefinierter Funktionen zum Parse-Zeitpunkt,
statt zur Laufzeit. Der Aufruf einer undefinierten Funktion zur Laufzeit ist ein schwerwiegender Fehler.

Das Wort Funkt kann anstelle von verwendet werden Funktion, obwohl dies veraltet ist.

DYNAMISCH LADEN NEU! FUNKTIONEN


Sie können dem Lauf dynamisch neue integrierte Funktionen hinzufügen gaffen Dolmetscher mit der
@Belastung Stellungnahme. Die vollständigen Details würden den Rahmen dieser Handbuchseite sprengen; sehen GAFFEN:
Effektiv AWK Programmierung.

SIGNALE


Das gaffen Der Profiler akzeptiert zwei Signale. SIGUSR1 bewirkt, dass ein Profil und eine Funktion ausgegeben werden
Aufrufstapel zur Profildatei, was entweder der Fall ist awkprof.out, oder wie auch immer die Datei benannt wurde
an. Nach der Installation können Sie HEIC-Dateien mit der --Profil Möglichkeit. Anschließend läuft es weiter. SEUFZEND Ursachen gaffen die wegwerfen
Profil- und Funktionsaufrufstapel aufrufen und dann beenden.

INTERNATIONALISIERUNG


String-Konstanten sind in doppelte Anführungszeichen eingeschlossene Zeichenfolgen. In nicht-englischer Sprache
In Sprachumgebungen ist es möglich, Zeichenfolgen im AWK-Programm als erforderlich zu markieren
Übersetzung in die lokale natürliche Sprache. Solche Zeichenfolgen werden im AWK-Programm mit gekennzeichnet
ein führender Unterstrich („_“). Zum Beispiel,

gaffen 'BEGINNEN { drucken "Hallo, Welt" }'

druckt immer Hallo, weltweit wie ausgehandelt und gekauft ausgeführt wird.. Aber,

gaffen 'BEGINNEN { drucken _"Hallo, Welt" }'

könnte gedruckt werden hallo, monde in Frankreich.

Zur Erstellung und Ausführung eines lokalisierbaren AWK-Programms sind mehrere Schritte erforderlich.

1. Hinzufügen START Aktion, um dem einen Wert zuzuweisen TEXTDOMAIN Variable zum Festlegen der Textdomäne
an einen mit Ihrem Programm verknüpften Namen:

START { TEXTDOMAIN = „meinprog“ }

Dies erlaubt gaffen zu finden, die .gmo Datei, die Ihrem Programm zugeordnet ist. Ohne das
Schritt, gaffen verwendet das Nachrichten Textdomäne, die wahrscheinlich keine Übersetzungen enthält
für Ihr Programm.

2. Markieren Sie alle Zeichenfolgen, die übersetzt werden sollen, mit führenden Unterstrichen.

3. Verwenden Sie ggf. die dcgettext() und / oder bindtextdomain() Funktionen in Ihrem Programm,
wie angemessen.

4. Führen gaffen --gen-pot -f myprog.awk > myprog.pot generieren .Topf Datei für Ihre


5. Stellen Sie geeignete Übersetzungen bereit und erstellen und installieren Sie die entsprechenden .gmo Dateien.

Die Internationalisierungsfunktionen werden ausführlich in beschrieben GAFFEN: Effektiv AWK
Programmierung.

POSIX KOMPATIBILITÄT


Ein vorrangiges Ziel für gaffen ist die Kompatibilität mit dem POSIX-Standard sowie mit dem
neueste Version von Brian Kernighan awk. Zu diesem Zweck, gaffen beinhaltet Folgendes
Für den Benutzer sichtbare Funktionen, die nicht im AWK-Buch beschrieben sind, aber Teil des Brian sind
Kernighans Version von awk, und sind im POSIX-Standard.

Das Buch weist darauf hin, dass die Zuweisung von Befehlszeilenvariablen erfolgt, wenn awk sonst der Fall wäre
Öffnen Sie das Argument als Datei, die nach dem steht START Regel wird ausgeführt. Allerdings in
Bei früheren Implementierungen erschien eine solche Zuweisung vor allen Dateinamen
Zuweisung würde stattfinden Bevor START Regel wurde ausgeführt. Anwendungen wurden abhängig
Dieses Feature." Wann awk wurde geändert, um mit der Dokumentation übereinzustimmen -v Option für
Das Zuweisen von Variablen vor der Programmausführung wurde hinzugefügt, um Anwendungen zu berücksichtigen
hing vom alten Verhalten ab. (Diese Funktion wurde von beiden Bell vereinbart
Laboratories und die GNU-Entwickler.)

Bei der Verarbeitung von Argumenten gaffen verwendet die spezielle Option „--“, um das Ende zu signalisieren
Argumente. Im Kompatibilitätsmodus warnt es vor undefinierten Optionen, ignoriert diese jedoch ansonsten.
Im Normalbetrieb werden solche Argumente zur Verarbeitung an das AWK-Programm übergeben.

Das AWK-Buch definiert den Rückgabewert von nicht sand(). Der POSIX-Standard hat es
Gibt den verwendeten Startwert zurück, um die Verfolgung von Zufallszahlenfolgen zu ermöglichen.
Deshalb sand() in gaffen gibt auch seinen aktuellen Startwert zurück.

Weitere neue Features sind: Die Verwendung mehrerer -f Optionen (von MKS awk); das UMWELT Array;
\a und \v Escape-Sequenzen (ursprünglich erstellt in gaffen und in die Glocke zurückgespeist
Laborversion); Die zu senken() und toupper() integrierte Funktionen (aus der Bell
Laborversion); und die ISO-C-Konvertierungsspezifikationen in printf (zuerst erledigt
die Version von Bell Laboratories).

HISTORISCH MERKMALE


Es gibt ein Merkmal historischer AWK-Implementierungen gaffen unterstützt: Es ist möglich
anrufen Länge() integrierte Funktion nicht nur ohne Argument, sondern sogar ohne
Klammern! Daher,

a = Länge # Heilig Algol 60, Batman!

ist dasselbe wie beides

a = Länge()
a = Länge($0)

Die Verwendung dieser Funktion ist eine schlechte Praxis gaffen gibt eine Warnung vor seiner Verwendung aus, wenn --Fussel is
in der Befehlszeile angegeben.

GNU ERWEITERUNGEN


Gaffen hat zu viele Erweiterungen für POSIX awk. Sie werden hier beschrieben
Abschnitt. Alle hier beschriebenen Erweiterungen können durch Aufruf deaktiviert werden gaffen an. Nach der Installation können Sie HEIC-Dateien mit der
--traditionell or --posix Optionen.

Die folgenden Funktionen von gaffen sind in POSIX nicht verfügbar awk.

· Es wird keine Pfadsuche für Dateien durchgeführt, die über benannt wurden -f Möglichkeit. Deshalb, die AWKPATH
Umgebungsvariable ist nichts Besonderes.

· Es gibt keine Möglichkeit, Dateien einzubinden (gaffen's @enthalten Mechanismus).

· Es gibt keine Möglichkeit, dynamisch neue in C geschriebene Funktionen hinzuzufügen (gaffen's @Belastung
Mechanismus).

· Das \x Fluchtabfolge. (Deaktiviert mit --posix.)

· Die Möglichkeit, Zeilen danach fortzusetzen ? und :. (Deaktiviert mit --posix.)

· Oktale und hexadezimale Konstanten in AWK-Programmen.

· Das ARGIND, BINMODUS, FEHLERNO, FUSSEL, RT und TEXTDOMAIN Variablen sind nichts Besonderes.

· Das FALL IGNORIEREN Variable und ihre Nebenwirkungen sind nicht verfügbar.

· Das FELDBREITEN Feldaufteilung mit variabler und fester Breite.

· Das FPAT Variablen- und Feldaufteilung basierend auf Feldwerten.

· Das PROCINFO Array ist nicht verfügbar.

· Die Verwendung von RS als regulärer Ausdruck.

· Die für die E/A-Umleitung verfügbaren speziellen Dateinamen werden nicht erkannt.

· Das |& Operator zum Erstellen von Co-Prozessen.

· Das ANFANGSDATEI und ENDFILE Sondermuster sind nicht verfügbar.

· Die Möglichkeit, einzelne Zeichen mithilfe der Nullzeichenfolge als Wert aufzuteilen FS,
und als drittes Argument zu Teilt().

· Ein optionales viertes Argument für Teilt() um die Trenntexte zu erhalten.

· Das optionale zweite Argument für schließen() Funktion.

· Das optionale dritte Argument für Spiel() Funktion.

· Die Möglichkeit, Positionsspezifizierer zu verwenden printf und sprintf().

· Die Möglichkeit, ein Array an zu übergeben Länge().

· Das Und(), sortieren(), sorti(), bindtextdomain(), compl(), dcgettext(), dcngettext(),
gensub(), lshift(), mktime(), oder(), patsplit(), rshift(), strftime (), strtonum(),
systime() und xor() Funktionen.

· Lokalisierbare Zeichenfolgen.

Das AWK-Buch definiert den Rückgabewert des nicht schließen() Funktion. Gaffen's schließen()
gibt den Wert von zurück fschließen(3) oder pschließen(3) beim Schließen einer Ausgabedatei oder Pipe,
jeweils. Es gibt den Exit-Status des Prozesses zurück, wenn eine Eingabepipe geschlossen wird. Der
Der Rückgabewert ist -1, wenn die benannte Datei, Pipe oder der Co-Prozess nicht mit a geöffnet wurde
Umleitung.

Wann gaffen wird mit dem aufgerufen --traditionell Option, wenn die fs Argument an die -F Option ist
„t“, also FS wird auf das Tabulatorzeichen gesetzt. Beachten Sie die Eingabe gaffen -F\t ... einfach verursacht
Die Shell setzt das „t“ in Anführungszeichen und übergibt „\t“ nicht an das -F Möglichkeit. Da dies ein ist
Ziemlich hässlicher Sonderfall, es ist nicht das Standardverhalten. Dieses Verhalten gilt auch nicht
auftreten, wenn --posix wurde angegeben. Um wirklich ein Tabulatorzeichen als Feld zu erhalten
Trennzeichen verwenden Sie am besten einfache Anführungszeichen: gaffen -F'\t' ....

VARIABLEN


Das AWKPATH Umgebungsvariable kann verwendet werden, um eine Liste der Verzeichnisse bereitzustellen, die gaffen
sucht bei der Suche nach Dateien mit dem Namen -f, --Datei, -i und --enthalten Optionen. Wenn
Die anfängliche Suche schlägt fehl, der Pfad wird nach dem Anhängen erneut durchsucht .awk zum Dateinamen.

Das AWKLIBPATH Umgebungsvariable kann verwendet werden, um eine Liste der Verzeichnisse bereitzustellen, die gaffen
sucht bei der Suche nach Dateien mit dem Namen -l und --Belastung Optionen.

Das GAWK_READ_TIMEOUT Umgebungsvariable kann verwendet werden, um ein Zeitlimit festzulegen
Millisekunden zum Lesen von Eingaben von einem Terminal, einer Pipe oder einer bidirektionalen Kommunikation, einschließlich
Steckdosen.

Für die Verbindung zu einem Remote-Host über Socket, GAWK_SOCK_RETRIES steuert die Anzahl der
Wiederholungsversuche und GAWK_MSEC_SLEEP und das Intervall zwischen den Wiederholungsversuchen. Das Intervall ist da
Millisekunden. Auf Systemen, die dies nicht unterstützen du schläfst(3) wird der Wert auf aufgerundet
ganzzahlige Anzahl von Sekunden.

If POSIXLY_KORREKT existiert also in der Umgebung gaffen verhält sich genau so, als ob --posix hätten
in der Befehlszeile angegeben wurde. Wenn --Fussel angegeben wurde, gaffen gibt eine Warnung aus
entsprechende Nachricht.

EXIT STATUS


Besitzt das wunsch Die Anweisung wird dann mit einem Wert verwendet gaffen wird mit dem angegebenen numerischen Wert beendet
verbunden.

Andernfalls, wenn bei der Ausführung keine Probleme aufgetreten sind, gaffen wird mit dem Wert von C beendet
konstante EXIT_SUCCESS. Dieser liegt in der Regel bei Null.

Wenn ein Fehler auftritt, gaffen wird mit dem Wert der C-Konstante beendet EXIT_FAILURE. Dies ist
normalerweise einer.

If gaffen aufgrund eines schwerwiegenden Fehlers beendet wird, ist der Exit-Status 2. Auf Nicht-POSIX-Systemen ist dies der Fall
Der Wert kann zugeordnet werden EXIT_FAILURE.

VERSION INFORMATIONEN


Diese Manpage dokumentiert gaffenVersion 4.1.

AUTOREN


Die Originalversion von UNIX awk wurde von Alfred Aho, Peter entworfen und umgesetzt
Weinberger und Brian Kernighan von Bell Laboratories. Brian Kernighan fährt fort
es pflegen und weiterentwickeln.

Paul Rubin und Jay Fenlason von der Free Software Foundation schrieben gaffen, um kompatibel zu sein
mit der Originalversion von awk verteilt in Seventh Edition UNIX. John Woods
hat eine Reihe von Fehlerbehebungen beigesteuert. David Trueman, mit Beiträgen von Arnold Robbins,
gemacht gaffen kompatibel mit der neuen Version von UNIX awk. Arnold Robbins ist der aktuelle
Betreuer.

See GAFFEN: Effektiv AWK Programmierung für eine vollständige Liste der Mitwirkenden gaffen und sein
Dokumentation.

Siehe die README Datei in das gaffen Distribution für aktuelle Informationen über Betreuer
und welche Ports derzeit unterstützt werden.

FEHLER BERICHTE


Wenn Sie einen Fehler finden gaffen, senden Sie bitte eine E-Mail an [E-Mail geschützt] Standards. Bitte
Geben Sie Ihr Betriebssystem und seine Revision, die Version von, an gaffen (Ab gaffen --Version),
welchen C-Compiler Sie zum Kompilieren verwendet haben, sowie ein Testprogramm und Daten, die so klein sind wie
möglich, das Problem zu reproduzieren.

Bevor Sie einen Fehlerbericht senden, gehen Sie bitte wie folgt vor. Überprüfen Sie zunächst, ob dies der Fall ist
die neueste Version von gaffen. Viele Fehler (normalerweise subtile) werden bei jeder Veröffentlichung behoben.
und wenn Ihre veraltet ist, wurde das Problem möglicherweise bereits gelöst. Zweitens, bitte sehen
wenn die Umgebungsvariable festgelegt wird LC_ALL zu LC_ALL=C bewirkt, dass sich die Dinge so verhalten, wie Sie es tun
erwarten. Wenn ja, handelt es sich um ein Problem mit dem Gebietsschema, und möglicherweise handelt es sich tatsächlich um einen Fehler. Endlich, bitte
Lesen Sie diese Manpage und das Referenzhandbuch sorgfältig durch, um sicherzugehen, dass das, was Sie denken, ein ist
Es handelt sich tatsächlich um einen Fehler und nicht nur um eine Eigenart der Sprache.

Was auch immer du tust, tue NICHT Veröffentlichen Sie einen Fehlerbericht in comp.lang.awk. Während die gaffen Entwickler
Wenn Sie diese Newsgroup gelegentlich lesen, ist das Posten von Fehlerberichten dort eine unzuverlässige Art der Meldung
Käfer. Bitte nutzen Sie stattdessen die oben angegebenen E-Mail-Adressen. Wirklich.

Wenn Sie ein GNU/Linux- oder BSD-basiertes System verwenden, möchten Sie möglicherweise einen Fehlerbericht an senden
der Anbieter Ihrer Distribution. Das ist in Ordnung, aber bitte senden Sie eine Kopie an den Beamten
Bitte geben Sie auch Ihre E-Mail-Adresse an, da keine Garantie besteht, dass der Fehlerbericht an diese Adresse weitergeleitet wird
gaffen Betreuer.

Nutzen Sie Gawk online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad