Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
awk [2017/10/17 21:29] root [Variablen] |
awk [2017/10/19 21:33] (aktuell) root [Built-In] |
||
|---|---|---|---|
| Zeile 108: | Zeile 108: | ||
| Es gibt 3 Arten von Variablen. | Es gibt 3 Arten von Variablen. | ||
| - | **Fields** | + | ===== Fields |
| * enthalten den Inhalt von Feldern | * enthalten den Inhalt von Feldern | ||
| Zeile 115: | Zeile 115: | ||
| * $0 enthält den gesamten Record/ | * $0 enthält den gesamten Record/ | ||
| - | **Built-In** | + | ===== Built-In |
| - | * Variablen deren Inhalt das Verhalten von awk bestimmen oder die Statusinformationen | + | * Variablen deren Inhalt das Verhalten von awk bestimmen oder die Sjantatusinformationen |
| * haben normale Namen (ohne irgend etwas davor) | * haben normale Namen (ohne irgend etwas davor) | ||
| Zeile 122: | Zeile 122: | ||
| ^Name ^Beschreibung ^ | ^Name ^Beschreibung ^ | ||
| - | |FS|Field Separator - Definiert das/die Trennzeichen bzw. den Regular Expression zum Trennen der Fields/ | + | |FS|Field Separator - Definiert das/die Trennzeichen bzw. den Regular Expression zum Trennen der Fields/ |
| - | |RS|Record Separator - Definiert das Trennzeichen bzw. den Regular Expression zum Trennen der Records/ | + | < |
| - | |OFS|Output Field Seperator - Definiert das Trennzeichen | + | Eingabestring: |
| + | awk-Aufruf: awk ' | ||
| + | Ausgabe: du | ||
| + | </ | ||
| + | In obigem Beispiel ist der Field—Seperator (FS=) auf " | ||
| + | Aus dem String " | ||
| + | Der Field-Seperator kann beim Aufruf gesetzt werden über die Option -F: | ||
| + | < | ||
| + | awk -F " | ||
| + | </ | ||
| + | oder in der BEGIN-Funktion: | ||
| + | < | ||
| + | awk ' | ||
| + | </ | ||
| + | \\ \\ | ||
| + | Field-Seperator kann ein einzelnes Zeichen, eine Zeichenkette oder ein regular Expression sein (was mehrer Zeichen/ | ||
| + | \\ | ||
| + | < | ||
| + | FS=" | ||
| + | </ | ||
| + | In diesem Fall ist der Feldtrenner das Zeichen " | ||
| + | \\ \\ \\ | ||
| + | < | ||
| + | FS=" | ||
| + | </ | ||
| + | In diesem Fall ist die Zeichenkette " | ||
| + | Beispielweise würde: | ||
| + | < | ||
| + | 511);622, 633 | ||
| + | </ | ||
| + | in die Felder: " | ||
| + | Aber: | ||
| + | < | ||
| + | 511;622, 633 | ||
| + | </ | ||
| + | würden nicht zerlegt werden.\\ \\ | ||
| + | Es muss immer die gesamte Zeichenkette zu finden sein die als Feldtrenner angegeben wurde. \\ \\ \\ | ||
| + | < | ||
| + | FS=" | ||
| + | </ | ||
| + | In diesem Fall ist der Feldtrenner das Zeichen " | ||
| + | Das bedeutet: | ||
| + | |||
| + | * " | ||
| + | * " | ||
| + | * " | ||
| + | \\ \\ | ||
| + | < | ||
| + | -F " | ||
| + | </ | ||
| + | In diesem Fall ist entweder " | ||
| + | \\ | ||
| + | Das bedeutet: | ||
| + | * " | ||
| + | * " | ||
| + | * " | ||
| + | |||
| + | </ | ||
| + | |RS|Record Separator - Definiert das Trennzeichen bzw. den Regular Expression zum Trennen der Records/ | ||
| + | < | ||
| + | Eingabestring: | ||
| + | Script: awk ' | ||
| + | Ausgabe: | ||
| + | Dies ist ein Satz | ||
| + | Dies ist der nächste | ||
| + | Dies der danach | ||
| + | </ | ||
| + | In obigem Beispiel enthält $0 den aktuellen Record, da " | ||
| + | < | ||
| + | Eingabestring: | ||
| + | Script: awk ' | ||
| + | Ausgabe: | ||
| + | ist | ||
| + | ist | ||
| + | der | ||
| + | </ | ||
| + | Obiges Beispiel ließt je einen Satz ein (da ein Record jeweils durch " | ||
| + | Im Prinziep trifft alles (die definierbaren regular Expressions usw.) vom Field Seperator auch auf den Recordseperator zu. | ||
| + | </ | ||
| + | |OFS|Output Field Seperator - Definiert das Trennzeichen | ||
| |ORS|Output Record Seperator - Definiert wie Records bei der Ausgabe getrennt werden. \\ \\ Per Default durch New Line (\n). \\ \\ Bei der Ausgabe ist ein Record ein print-Statement und alles was dies ausgibt. Gibt es mehrere Ausgaben durch print, startet jedes print-Statement einen neue Zeile/ | |ORS|Output Record Seperator - Definiert wie Records bei der Ausgabe getrennt werden. \\ \\ Per Default durch New Line (\n). \\ \\ Bei der Ausgabe ist ein Record ein print-Statement und alles was dies ausgibt. Gibt es mehrere Ausgaben durch print, startet jedes print-Statement einen neue Zeile/ | ||
| < | < | ||