[PERL] pobieranie informacji z loga

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
mariusz198787
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 123
Rejestracja: 19 maja 2010, 19:50
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Architektura: x86

[PERL] pobieranie informacji z loga

Post autor: mariusz198787 »

Witam!

Jak pobrać z loga np. adres źródła albo wartość jakiegoś pola np. len w perlu??
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: [PERL] pobieranie informacji z loga

Post autor: jacekalex »

Wczytywanie - uchwyt pliku http://pl.wikibooks.org/wiki/Perl/Operacje_na_plikach
parsowanie linia po linii pętla while <Uchwyt_pliku> , wyrazenie regularne (funkcja split) - dzieli wiersz na kolumny wg znaku dzielącego (analogicznie do awk -F) - przypisując poszczególne pola do zmiennych.
http://pl.wikibooks.org/wiki/Perl/Opera ... egularnych
viewtopic.php?t=109474
Funkcja split:
http://pl.wikibooks.org/wiki/Perl/Opera ... egularnych

http://www.kt.agh.edu.pl/perl-faq/

http://wieluk.republika.pl/s/wzorce.html

I jeszcze to: http://www.tizag.com/perlT/perlfileinput.php
man perlre
Pozdrawiam
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
mariusz198787
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 123
Rejestracja: 19 maja 2010, 19:50
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [PERL] pobieranie informacji z loga

Post autor: mariusz198787 »

o dzięki wielkie

a tak przy okazji jak mam tekst

assjdhjdfhj mfbdjfgj ./c.v;d,v;d SDR=3445 TYU=356 d;fkldfk;

chcę żeby wypisało mi tylko SDR=3445
robię takie cos

Kod: Zaznacz cały

if($zmienna=~/SRC=(.*)/){print $1;}

to zwraca w wyniku SDR=3445 TYU=356 d;fkldfk;

jak powinno być?

metodą prób i błędów doszedłem że powinno być ~/(SRC=(.+?)\s)/) ale za bardzo nie wiem dlaczego:P
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [PERL] pobieranie informacji z loga

Post autor: otokan »

Kwantyfikatory * i + są zachłanne (greedy). To znaczy, że dopasowują się do najdłuższego znalezionego podciągu, który pozwala na dopasowanie się całego wyrażenia regularnego. Jeśli za kwantyfikatorem doda się znak ? czyli ( *? i +? ) to dopasowany będzie najkrótszy możliwy podciąg.

Czyli np:

Kod: Zaznacz cały

/1(.*)1/:
01010101010
 (-------)

/1(.*?)1/:
01010101010
 (-)
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: [PERL] pobieranie informacji z loga

Post autor: jacekalex »

Ten przykład jest podobny do twojego przypadku:

Kod: Zaznacz cały

  open(PASSWD, '/etc/passwd');
    while (<PASSWD>) {
        chomp;
        ($login, $passwd, $uid, $gid,
         $gcos, $home, $shell) = split(/:/);
        #...
    }
http://perldoc.perl.org/functions/split.html

Pozdrawiam
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: [PERL] pobieranie informacji z loga

Post autor: leon1313 »

Kod: Zaznacz cały

echo "assjdhjdfhj mfbdjfgj ./c.v;d,v;d SDR=3445 TYU=356 d;fkldfk;" | perl -lane 'print $F[3]'
, choć osobiście bym to zrobił na grupach
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości