/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
awk
Fra : Jan Eliasen


Dato : 15-09-03 13:51



 
 
Niels Tolstrup (15-09-2003)
Kommentar
Fra : Niels Tolstrup


Dato : 15-09-03 14:59

Hej Jan,

Jeg ændrede linien

> while ((getline < $1) > 0 )
til
fn = $1
while ((getline < fn) )

Det bevirker at getline bliver ved med at læse fra samme fil,
er det det du vil?

Venlig hilsen

Niels

Jan Eliasen wrote:

> Hejsa
>
> Jeg har et problem med awk som jeg ikke kan greje. Jeg vil gerne have en
> awk-kommando inde i et shell-script, og kommandoen skal egentlig ikke gøre
> andet end at tage et antal parametre. Hvis den sidste parameter er "felt"
> så skal en enkelt fil udskrives til standard-output og hvis den sidste
> parameter er "tabel" skal jeg gøre noget andet. Det virker så vidt at den
> første linie bliver udskrevet, men så stopper festen. Hvorfor kommer
> resten af linierne ikke? På forhånd tak.
>
> Jeg har et shell-script der ser sådan ud:
>
> #!/bin/sh
> skriv() {
> awk '
> {
> if ($NF == "felt") {
> while ((getline < $1) > 0 )
> print
> } else {
> printf "Tabeller\n";
> }
> }
> '
> }
>
> echo $* | skriv >> /tmp/datadic.$$
>


Klaus Alexander Seis~ (15-09-2003)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 15-09-03 15:35

Jan Eliasen skrev:

> while ((getline < $1) > 0 )

I awk-scripts henviser $1 til første "ord" på nuværende linje, og
da hele awk-scriptet er indkapslet i enkeltgnyffer, bliver $1 aldrig
opfattet som en shell-variabel.

<uafprøvet>

Prøv evt. at putte filnavnet i en variabel med "awk -v fn=$1", og
brug så fn i while-løkken i stedet for $1.

</uafprøvet>


// Klaus

--
><>    unselfish actions pay back better

Søg
Reklame
Statistik
Spørgsmål : 177504
Tips : 31968
Nyheder : 719565
Indlæg : 6408549
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste