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

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

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

Post 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.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post 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ć :)
ODPOWIEDZ