Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

AWK hält Argument für Datei

darkone / 5 Antworten / Baumansicht Nickles

Hallo Leute


Wenn ich AWK ein einfaches Argument übergeben wil, zb per Kommandozeile, interpretiert er dies als zu verarbeitende Datei, welche er natürlich nicht findet. Es gibt keine Parameter zur Kennzeichnung und das Beispiel aus dem Lehrbuch klappt nicht, wieso?


 

bei Antwort benachrichtigen
vergisses darkone „AWK hält Argument für Datei“
Optionen

Hallo darkone,

Parameter an den AWK werden über Schalter übergeben.
Schalter werden grundsätzlich mit dem Minus "-" Zeichen übergeben.
Manche Schalter / Parameter werden auch mit doppelten Minus "--" Zeichen übergeben.
Bei vielen Schaltern folgt zusätzlich ein Wert.
Diese Regeln gelten übrigens für viele Unix Tools.

Beispiele:
awk -f meinscript.awk // awk mit dem Script in meinscript.awk aufrufen
awk -F ^ // Das ^ als Fieldseparator nehmen
awk -W version // gibt die Version aus
awk --version // gibt auch die Version aus


Ich hoffe, daß ich Dir weiterhelfen konnte.
Gruss, vergisses

bei Antwort benachrichtigen
darkone vergisses „Hallo darkone, Parameter an den AWK werden über Schalter übergeben. Schalter...“
Optionen

Hallo vergisses
Ich meinte nicht Parameter, sondern Argumente, wie variablen.
Das Problem war daß awk alle argumente als dateien betrachtet.
Allerdings erst nach dem BEGIN-Block, darum muß man dort erst ARGV auslesen in eine variable speichern und dann ARGV löschen, damit ers nicht später doch noch als Datei betrachtet und danach sucht.

bei Antwort benachrichtigen
vergisses darkone „Hallo vergisses Ich meinte nicht Parameter, sondern Argumente, wie variablen....“
Optionen

Hallo darkone,

Sorry, war ein Missverständnis.
Variablen werden auf der Kommandozeile in Form einer Wertzuweisung
übergeben, z. B. awk -f myprog.awk a=10 name=otto Namen.txt
(Es kann sein, das der String "otto" in Anführungszeichen
gesetzt werden muss, weiß ich im Moment nicht so genau.)

Ohne Zuweisung oder Parameterschalter werden die Argumente
immer als Dateinamen interpretiert.
Es ergibt auch keinen Sinn, eine Variable ohne Wertinhalt
zu übergeben, da man diese dann gar nicht übergeben muß
sondern später im AWK Programm einfach verwenden kann.

Gruss, vergisses

bei Antwort benachrichtigen
j_b vergisses „Hallo darkone, Sorry, war ein Missverständnis. Variablen werden auf der...“
Optionen

Wie kann ich dann diese Variablen weiterverwenden?
Möchte eine Variable (im Script definiert) in die Such-Parameter einfügen. Leider funktioniert dies nicht wie gewünscht.
AWK soll Zeilen rausschreiben von "Warning" bis "aktuellen Monat(z.B. Sep)".
Wie kann ich das umsetzen?

Script (so funktioniert es nicht):
Mt=`date +%b`
awk '/Warning/,/ warning.log

Danke für die Hilfe.
gruss Jerome

bei Antwort benachrichtigen
Uli M darkone „AWK hält Argument für Datei“
Optionen

awk -v VAR1="Wert der Variablen1" -v VAR2=15 ...

bei Antwort benachrichtigen