Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

AWK im Besonderen

2 views
Skip to first unread message

Sven Haufe

unread,
Dec 17, 1991, 9:54:19 AM12/17/91
to
Jaa, also der AWK ist ja `ne feine Sache, aaaaber:
Es ist moeglich, einen redirect im awk-print zu ordern.
Dies kann entweder in eine $n-Variable oder mittels expliziter
Namenszuweisung (z.B. "OUT_FILE") erfolgen...
Ich wuerde den output aber ganz gerne in eine Datei umleiten,
deren Name sich in einer von mir definierten Variablen versteckt.
Wie laesst sich der AWK dazu bewegen, mir meinen Variableninhalt
in diesem Falle zu evaluieren ??? Normale Shell-Syntax bringt
ebensowenig Erfolg, wie abstrusere Ansprechungen.
Wem dazu etwas einfaellt, sei hiermit herzlichst eingeladen, an
dieser Stelle `n bueschen was zu schreiben...
Besten Dank,
snowman
--
_ _ _ _ _ _ Michael Andreas Meiszl | Phone: +49 2381 889121
' ) ) ) ' ) ) ) Tomsonstrasse 25 | Fax : +49 2381 880084
/ / / __. / / / D-4700 Hamm 1 | Data : +49 2381 880081
/ ' (_(_/| / ' (_ Germany | Email: m...@mamnix.garmhausen.de

Lutz Birkhahn

unread,
Jan 9, 1992, 6:56:48 PM1/9/92
to
sno...@mamnix.hamm.sub.org (Sven Haufe) writes:
>
> Es ist moeglich, einen redirect im awk-print zu ordern.
> Dies kann entweder in eine $n-Variable oder mittels expliziter
> Namenszuweisung (z.B. "OUT_FILE") erfolgen...
> Ich wuerde den output aber ganz gerne in eine Datei umleiten,
> deren Name sich in einer von mir definierten Variablen versteckt.
> Wie laesst sich der AWK dazu bewegen, mir meinen Variableninhalt
> in diesem Falle zu evaluieren ???

Wo liegt das Problem? Du kannst doch anstelle eines Strings auch
eine Variable angeben, dann wird deren Inhalt als Filename genommen
(zumindest macht es das awk unter SunOS 4.1.1 so). Ich habe folgen-
des mal ausprobiert:

BEGIN { filename = "test" "datei" "name" }
{ print > filename }

Danach stand alles so wie es eingegeben war in der Datei testdateiname.

Siehe auch "The AWK Programming Language", Seite 57:


$3 > 100 { print $1, $3 >"bigpop" }
$3 <= 100 { print $1, $3 >"smallpop" }

Notice that the filenames have to be quoted; without quotes, bigpop
and smallpop are merely uninitialized variables. Filenames can be
variables or expressions as well:

{ print($1, $3) > ($3 > 100 ? "bigpop" : "smallpop") }

does the same job, and the program

{ print > $1 }

puts every input line into a file named by the first field.

Das Buch bezieht sich generell auf das "new awk", vielleicht hast Du
eine alte Version (erkennbar z.B. daran, dass es keine user-defined
functions gibt)?

--
Lutz Birkhahn (Germany) email: lu...@bisun.nbg.sub.org (don't use another!)
F"urther Str. 6 +--------------------------------------------------
D-W-8501 Cadolzburg 2 | "It is an error to not have enough arguments"
Voice: 09103 / 2886 | (Hype Programmer's Guide)

0 new messages