Strona 1 z 1

[+] awk pobieranie rekordu o różnych polach za każdym razem

: 06 kwietnia 2010, 11:51
autor: Bastian
Witam.
Powiedzmy, że mam taki oto plik:

Kod: Zaznacz cały

Gwiezdne wrota otworem stanęły
W nich pojawiłaś się Ty
Wszystkie smutki przeminęły
Zaczęły spełniać się sny

Gwiezdna droga prowadzi mnie
Do Twoich Kochanie drzwi
Tak bardzo, bardzo kocham Cię
Wszystkim co mam jesteś Ty
Chcę za pomocą awka wyciągnąć 2 i 3 linię jeżeli w pierwszej linii, powiedzmy na drugiej pozycji znajdzie się słowo "wrota". Próbuje tak:

Kod: Zaznacz cały

awk '{{if ($2=="wrota") {next}}
                    linia=$0
                   {for(linia=1;linia<=3;linia++)
                          print linia}}' 
Jednak to polecenie wypisuje tylko cyfry ponumerowanych linii od 1-3. Pewnie jakoś trzeba linie, które chcę wyświetlić ując w tablice i dopiero wyświetlać, ale nie wiem jak. Proszę o pomoc. Chodzi mi tylko o rozwiązanie z awk.

: 06 kwietnia 2010, 20:36
autor: lessmian2
Eh, nie rozumiem co Ty tu zakombinowałeś ;)

Kod: Zaznacz cały

awk '{if ($2=="wrota"){start=NR};if(NR==start+1 || NR==start+2){print $0}}' plik_z_tekstem
Wypisze dwie następne linie, po znalezieniu słowa wrota na drugim polu.

: 06 kwietnia 2010, 21:25
autor: Bastian
lessmian2 pisze:Eh, nie rozumiem co Ty tu zakombinowałeś ;)

Kod: Zaznacz cały

awk '{if ($2=="wrota"){start=NR};if(NR==start+1 || NR==start+2){print $0}}' plik_z_tekstem
Wypisze dwie następne linie, po znalezieniu słowa wrota na drugim polu.

Na swoje usprawiedliwienie powiem tylko, że próbowałem tak chyba... :o tyle, że z FNR...teraz działa. Wstyd.

Dziękować :)