Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
jest sobie log który ma sporo wpisów (ramek) i z całego loga chce wyciągnąć tylko te
______________________________________________________________________________ | (119631:000075) Physical-Event : | long: 49 desti: 0 source: 0 cryst: 1 cpl: 2 us: 0 term: 0 type a5 | tei: 0 >>>> message received : SETUP [05] Call ref : 59 44 |______________________________________________________________________________ | | IE:[04] BEARER_CAPABILITY (l=3) 80 90 a3 | IE:[18] CHANNEL (l=3) a9 83 92 -> T2 : B channel 18 exclusive | IE:[6c] CALLING_NUMBER (l=11) -> 21 81 Num : 123456789 | IE:[70] CALLED_NUMBER (l=5) -> 81 Num : 567890123 | [a1] Sending complete |______________________________________________________________________________ ______________________________________________________________________________ | (119631:000076) 1268: Send_IO1 (link-nbr=1, sapi=0, tei=0) : | long: 23 desti: 0 source: 15 cryst: 1 cpl: 2 us: 8 term: 0 type a5 | tei: 0 <<<< message sent : CALL PROC (02) Call ref : d9 44 |______________________________________________________________________________ | | IE:[18] CHANNEL (l=3) a9 83 92 -> T2 : B channel 18 exclusive |______________________________________________________________________________
tu są tylko dwie ramki i charakteryzują się wpisem w wierszu zaczynającym się od tei:... 9 44 czyli cztery ostatnie znaki z wiersza
jak na podstawie tych czterech znaków wyciągnąć całą ramkę ? jedna ma 12 wierszy a druga 8.
Offline
I każda ramka 59 44 ma 12 wierszy i każda d9 44 ma 8?
Jeżeli tak to:
grep '59 44' -B3 -A8 log.txt grep 'd9 44' -B3 -A4 log.txt
EDIT:
Krótkie wyjaśnienie co robią parametry -A i -B:
[quote=man grep]Context Line Control
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines.
Places a line containing a group separator (--) between
contiguous groups of matches. With the -o or --only-matching
option, this has no effect and a warning is given.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines.
Places a line containing a group separator (--) between
contiguous groups of matches. With the -o or --only-matching
option, this has no effect and a warning is given.[/quote]
Ostatnio edytowany przez Piotr3ks (2016-03-06 17:43:04)
Offline
fajnie, ale :)
ramka 59 44 tylko raz ma 12 wierszy, później ma po 8, a są też ramki bardziej rozbudowane, więc ta wartośc jest zmienna. Myślałem żeby zczytywać wiersze do drugiego wystąpienia wzorca "|_________" to jest wzór kończący całą ramkę niezależnie od jej rozmiaru.
1) znam wartość jaka musi wystąpić w ramce
2) wiem już jak wyłapać początek tej ramki '-B3'
3) nie wiem jak łapac koniec przy zmiennej dlugości
może to zrobić jakąś pętlą ?
Offline
Między ramkami jest pusty wiersz?
Jeżeli tak to:
cat log.txt | csplit -s - '/^$/'
Jak to wykonasz to każdą pojedynczą ramkę zapisze Ci do oddzielnego pliku (pod warunkiem, że między ramkami jest pusta linia).
EDIT:
No i jak już będziesz miał każdą ramkę w oddzielnym pliku to sobie już pętlą for i grepem przelecisz po tych plikach.
Ostatnio edytowany przez Piotr3ks (2016-03-06 18:56:41)
Offline
tego nie znałem, ale wyszło tak, że zrobił 2 pliki i w pierwszym jest pierwsza ramka a w drugim reszta, a źródełko wygląda tak
______________________________________________________________________________ | (119631:000075) Physical-Event : | long: 49 desti: 0 source: 0 cryst: 1 cpl: 2 us: 0 term: 0 type a5 | tei: 0 >>>> message received : SETUP [05] Call ref : 59 44 |______________________________________________________________________________ | | IE:[04] BEARER_CAPABILITY (l=3) 80 90 a3 | IE:[18] CHANNEL (l=3) a9 83 92 -> T2 : B channel 18 exclusive | IE:[6c] CALLING_NUMBER (l=11) -> 21 81 Num : 123456789 | IE:[70] CALLED_NUMBER (l=5) -> 81 Num : 567890123 | [a1] Sending complete |______________________________________________________________________________ ______________________________________________________________________________ | (119631:000076) 1268: Send_IO1 (link-nbr=1, sapi=0, tei=0) : | long: 23 desti: 0 source: 15 cryst: 1 cpl: 2 us: 8 term: 0 type a5 | tei: 0 <<<< message sent : CALL PROC (02) Call ref : d9 44 |______________________________________________________________________________ | | IE:[18] CHANNEL (l=3) a9 83 92 -> T2 : B channel 18 exclusive |______________________________________________________________________________ ______________________________________________________________________________ | (119631:000077) 1268: Send_IO1 (link-nbr=1, sapi=0, tei=0) : | long: 22 desti: 0 source: 15 cryst: 1 cpl: 2 us: 8 term: 0 type a5 | tei: 0 <<<< message sent : ALERT (01) Call ref : d9 44 |______________________________________________________________________________ | | IE:[1e] PROGRESS_ID (l=2) 81 88 |______________________________________________________________________________ ______________________________________________________________________________ | (119668:000078) Physical-Event : | long: 22 desti: 0 source: 0 cryst: 1 cpl: 2 us: 0 term: 0 type a5 | tei: 0 >>>> message received : DISCONNECT [45] Call ref : 59 44 |______________________________________________________________________________ | | IE:[08] CAUSE (l=2) 81 90 -> [90] NORMAL CALL CLEARING |______________________________________________________________________________ ______________________________________________________________________________ | (119668:000079) 1268: Send_IO1 (link-nbr=1, sapi=0, tei=0) : | long: 22 desti: 0 source: 15 cryst: 1 cpl: 2 us: 8 term: 0 type a5 | tei: 0 <<<< message sent : RELEASE [4d] Call ref : d9 44 |______________________________________________________________________________ | | IE:[08] CAUSE (l=2) 81 90 -> [90] NORMAL CALL CLEARING |______________________________________________________________________________ ______________________________________________________________________________ | (119669:000080) Physical-Event : | long: 22 desti: 0 source: 0 cryst: 1 cpl: 2 us: 0 term: 0 type a5 | tei: 0 >>>> message received : REL COMP [5a] Call ref : 59 44 |______________________________________________________________________________ | | IE:[08] CAUSE (l=2) 81 90 -> [90] NORMAL CALL CLEARING |______________________________________________________________________________
Offline
No to mała poprawka:
csplit -s log.txt '/^$/' '{*}'
Ostatnio edytowany przez Piotr3ks (2016-03-06 19:58:56)
Offline
Ja do takich kfiatków zazwyczaj zatrudniam Perla:
https://forum.dug.net.pl/viewtopic.php?id=22977
A tak poza tym, to co za program generuje te logi?
- może da się tam wytargać dane w bardziej zjadliwej formie.
Ostatnio edytowany przez Jacekalex (2016-03-06 20:31:09)
Offline
zdecydowanie lepiej, czyli tak:
1) przepuszczam plik przez csplita wychodzi z tego z 1000 plików
2) przeszukuje pliki w poszukiwaniu ciągu '123456789' <- grep -l 123456789 * ?
3) w znalezionym pliku zczytuję ostatnie 4 znaki wiersza zaczynającego się od 'tei' <- [s]tu już nie wiem jak[/s] grep tei|tail -c 5
4) przeglądam kolejno pliki w poszukiwaniu łańcucha z pkt3 i jeśli znajde to dorzucam do wyniku cały plik
Ostatnio edytowany przez MarekO (2016-03-06 23:15:54)
Offline
Jacekalex
nie mam na maszynie docelowej perla i muszę sobie radzić podstawowymi narzędziami
a te logi to jest ruch na karcie ISDN i to jest bardziej zjadliwa forma, podstawowa to RAW częściowo tłumaczony na czytelny a większość danych szesnastkowo :)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00088 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.59.244' WHERE u.id=1 |
0.00088 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.59.244', 1732631193) |
0.00041 | SELECT * FROM punbb_online WHERE logged<1732630893 |
0.00043 | SELECT topic_id FROM punbb_posts WHERE id=298711 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=28356 ORDER BY posted |
0.00047 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28356 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00081 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28356 ORDER BY p.id LIMIT 0,25 |
0.00107 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28356 |
Total query time: 0.00519 s |