Strona 1 z 1

[+] Włączenie do pętli w bashu polecenia awk

: 14 lipca 2009, 15:59
autor: dawoz
Witam serdecznie, mam następujący problem.
Mam plik tekstowy o takiej postaci:

Kod: Zaznacz cały

nagłówek1; nagłówek2; nagłówek3; itd aż do 45
wartość1;wartość2;wartość3; itd aż do 45
wartość1; wartość2;wartość3 itd aż do 45

itd
Jest to plik ze statystykami z sipp generowany automatycznie i teraz chcę napisać skrypt (a właściwie już go piszę), który zrobi mi coś takiego.

Jest pętla w bashu z licznikiem $LICZNIK wewnątrz niej wykonuje się polecenie awk:

Kod: Zaznacz cały

#
while [ $LICZNIK -ge 1 ] ; do
                awk 'BEGIN { FS = ";" } ; { print $j }' temp
                LICZNIK=$[LICZNIK - 1]
        done
Moje pytanie brzmi - czy można jakoś wstrzyknąć wartość licznika do polecenia awk, tak, żeby ten wypisał mi nie wartość licznika tylko pole które jest pod tą wartością.
Czyli:

Kod: Zaznacz cały

LICZNIK = 3
daje mi:

Kod: Zaznacz cały

 print $3
co z kolei wypisuje nagłówek3 na ekran.

: 14 lipca 2009, 17:45
autor: lessmian2
Spróbuj czegoś takiego:

Kod: Zaznacz cały

while [ $LICZNIK -ge 1 ] ; do 
                awk -v licznik="$LICZNIK" ' BEGIN { FS = ";" } ; { print $licznik }' temp 
                LICZNIK=$[LICZNIK - 1] 
        done
Daj znać czy o to Ci chodziło.

: 15 lipca 2009, 09:53
autor: dawoz
idealnie o to chodziło, dziękuję Ci.