распарсить текст

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 9:39:29

кто хорошо знает регекспы?
нужно распарсить такой файл
пример

Код: Выделить всё

6,28) ie:r(252,63) sup_rates_ovrd:r(252,63) ext_rates_ovrd:r(252,63) pwr_cap:(21
9,25) WPA_auth:(4,4) bsscfg:(249,20) wme_ie:(219,65) cap_ie:(219,85) cap_ie:(219
,85) rclist:(230,2) i:r(6,28) min_pwr:(4,3) max_pwr:(4,3) i:r(6,28) wlc_authresp
_client:f(0,22) wlc:P(1,2) rxh:p(256,3) hdr:P(1,66) body:P(66,2) len:p(6,28) len
:r(6,28) auth_alg:r(4,4) auth_seq:r(4,4) auth_status:r(4,4) challenge:r(249,7) s
cb:r(246,35) pkt:r(66,2) wlc_clear_hw_association:F(0,22) wlc:P(1,2) regs:r(252,
114) rs:(246,4) wlc_join_start_ibss:f(0,1) wlc:P(1,2) ssid:P(1,16) ssid_len:P(0,
1) bi:(246,15) band:r(252,116) chspec:r(215,1) bi:(246,15) band:r(252,116) chspe
c:r(215,1) wlc_ibss_disable:F(0,22) wlc:P(1,2) wlc_ibss_enable:F(0,22) wlc:P(1,2
) wlc_tkip_countermeasures:f(0,22) wlc:P(1,2) txstatus:P(6,28) dummy:P(66,2) scb
:r(246,35) wlc_disassociate_client:F(0,1) wlc:P(1,2) send_disassociate:P(4,1) fn
:P(252,70) arg:P(66,2) scb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28) s
cb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28) wlc_sup_mic_error:F(4,1)
wlc:P(1,2) group:P(4,1) wlc_getrand:F(0,22) wlc:P(1,2) buf:P(249,7) buflen:P(0,1
) rand:r(0,1) wlc_pkt_callback_append:F(0,22) wlc:P(1,2) new_pkt:P(66,2) pkt:P(6
6,2) idx:r(4,3) wlc_pkt_callback_register:F(0,1) wlc:P(1,2) fn:P(252,70) arg:P(6
6,2) pkt:P(66,2) pcb:r(1,87)=*(252,73) i:r(4,3) pcb:r(1,87) i:r(4,3) wlc_pkt_cal
и того
name:f(num,num) это начало функции
name:p(num,num) это аргументы
дальше это переменные в функции
тоесть к примеру

Код: Выделить всё

... wlc_clear_hw_association:F(0,22) wlc:P(1,2) regs:r(252,114) rs:(246,4)...
надо преобразовать в

Код: Выделить всё

 wlc_clear_hw_association:F(0,22) wlc:P(1,2)
{
             regs:r(252,114)
             rs:(246,4)

}
это пока для начала

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 9:44:07

и другой регексп преобразовать к виду

Код: Выделить всё

wlc_clear_hw_association(wlc)
{
             regs:r(252,114)
             rs:(246,4)

}
а если аргументов много то через запятую

Код: Выделить всё

wlc_clear_hw_association(wlc, on)  по списку аргументов если он не один
{
             regs:r(252,114)
             rs:(246,4)

}

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: распарсить текст

Непрочитанное сообщение ProFTP » 2008-11-09 10:10:41

Код: Выделить всё

pcb:r(1,87)=*(252,73)
с вот этим что делать?

а как это называется? может готовое есть?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 10:18:18

Код: Выделить всё

wlc_pkt_callback_register:F(0,1) wlc:P(1,2) fn:P(252,70) arg:P(6
6,2) pkt:P(66,2) pcb:r(1,87)=*(252,73) i:r(4,3) pcb:r(1,87) i:r(4,3) 

Код: Выделить всё

wlc_pkt_callback_register:F(0,1) wlc:P(1,2) fn:P(252,70) arg:P(66,2) pkt:P(66,2)
               pcb:r(1,87)=*(252,73)
               i:r(4,3)
               pcb:r(1,87)
               i:r(4,3) 
и второй вариант

Код: Выделить всё

wlc_pkt_callback_register(wlc, fn, arg, pkt)
{
               pcb:r(1,87)=*(252,73)
               i:r(4,3)
               pcb:r(1,87)
               i:r(4,3)
}
 
все что от аргументов до начала след функции между пробелом вставитть \n
Последний раз редактировалось paradox 2008-11-09 10:22:56, всего редактировалось 1 раз.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: распарсить текст

Непрочитанное сообщение ProFTP » 2008-11-09 10:19:53

:-o
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 10:25:28

paradox.lissyara.su/wl_apsta.o.bz2
bunzip2 wl_apsta.o.bz2
strings wl_apsta.o
вот этот текст

причем ловить парсер должен пока что то ко функции
тоесть
name:f(num, num) и то что дальше до другой

потому как там еще и другие переменные есть
структуры итд

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: распарсить текст

Непрочитанное сообщение zg » 2008-11-09 11:52:40

paradox писал(а):это пока для начала
а потом нас всех посодют за нарушение лицензии :smile: дизассемблировать не хорошо :oops:

думаю надо простенький парсер делать, простой регуляркой тут не обойтись

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 12:13:26

та ну это простой парсер должен уметь сделать
к томуже там до дизасма как до ньюерка ....
в СССР этого не заарещено

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: распарсить текст

Непрочитанное сообщение ProFTP » 2008-11-09 16:53:49

Код: Выделить всё

#!/usr/bin/perl

$fun=':F';
$arg=':P';

open(MYFILE, "/usr/home/ii/paradox.txt") || die "sdfsdfsdfsdf sd";             

#@contents=<MYFILE>;                                                             
#foreach $i (@contents){  

while (<MYFILE>) {

s { (\w+ $fun \W+)  } {  \n $1}iogx; 

s { (  $arg w+) } {   \n }iogx; 
print ;

}
выводит вот такое

http://wdh.suncloud.ru/perl04.htm

Код: Выделить всё

6,28) ie:r(252,63) sup_rates_ovrd:r(252,63) ext_rates_ovrd:r(252,63) pwr_cap:(21
9,25) WPA_auth:(4,4) bsscfg:(249,20) wme_ie:(219,65) cap_ie:(219,85) cap_ie:(219
,85) rclist:(230,2) i:r(6,28) min_pwr:(4,3) max_pwr:(4,3) i:r(6,28) wlc_authresp
  
 _client:f(0,22) wlc:P(1,2) rxh:p(256,3) hdr:P(1,66) body:P(66,2) len:p(6,28) len
:r(6,28) auth_alg:r(4,4) auth_seq:r(4,4) auth_status:r(4,4) challenge:r(249,7) s
cb:r(246,35) pkt:r(66,2)   
 wlc_clear_hw_association:F(0,22) wlc:P(1,2) regs:r(252,
114) rs:(246,4)   
 wlc_join_start_ibss:f(0,1) wlc:P(1,2) ssid:P(1,16) ssid_len:P(0,
1) bi:(246,15) band:r(252,116) chspec:r(215,1) bi:(246,15) band:r(252,116) chspe
c:r(215,1)   
 wlc_ibss_disable:F(0,22) wlc:P(1,2)   
 wlc_ibss_enable:F(0,22) wlc:P(1,2
)   
 wlc_tkip_countermeasures:f(0,22) wlc:P(1,2) txstatus:P(6,28) dummy:P(66,2) scb
:r(246,35)   
 wlc_disassociate_client:F(0,1) wlc:P(1,2) send_disassociate:P(4,1) fn
:P(252,70) arg:P(66,2) scb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28) s
cb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28)   
 wlc_sup_mic_error:F(4,1)
wlc:P(1,2) group:P(4,1)   
 wlc_getrand:F(0,22) wlc:P(1,2) buf:P(249,7) buflen:P(0,1
) rand:r(0,1)   
 wlc_pkt_callback_append:F(0,22) wlc:P(1,2) new_pkt:P(66,2) pkt:P(6
6,2) idx:r(4,3)   
 wlc_pkt_callback_register:F(0,1) wlc:P(1,2) fn:P(252,70) arg:P(6
6,2) pkt:P(66,2) pcb:r(1,87)=*(252,73) i:r(4,3) pcb:r(1,87) i:r(4,3) wlc_pkt_cal

дальше не знаю... не получилось
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: распарсить текст

Непрочитанное сообщение Yam » 2008-11-09 21:59:48

Вот, попробуй.

Код: Выделить всё

#!/bin/sh

in_file=./test.in
out_file=./test.out

cat $in_file \
| sed -E 's/([a-z_0-9]+:[Ff]+\([0-9,]+\) ?)(([a-zA-Z_0-9]+:[Pp]+\([0-9,]+\) ?)+)(([A-Za-z_0-9]+:?[^FfPp]?\([0-9,]+\)[=\*]*\(?[0-9,]*\)? ?)*)/\
\/* begin of function: \1 \/*\
\
\1 \2\
{\
    \4\
}\
\
/g' > $out_file

На входе (test.in):

Код: Выделить всё

wlc_authresp_client:f(0,22) wlc:P(1,2) rxh:p(256,3) hdr:P(1,66) body:P(66,2) len:p(6,28) len:r(6,28) auth_alg:r(4,4) auth_seq:r(4,4) auth_status:r(4,4) challenge:r(249,7) scb:r(246,35) pkt:r(66,2) wlc_clear_hw_association:F(0,22) wlc:P(1,2) regs:r(252,114) rs:(246,4) wlc_join_start_ibss:f(0,1) wlc:P(1,2) ssid:P(1,16) ssid_len:P(0,1) bi:(246,15) band:r(252,116) chspec:r(215,1) bi:(246,15) band:r(252,116) chspec:r(215,1) wlc_ibss_disable:F(0,22) wlc:P(1,2) wlc_ibss_enable:F(0,22) wlc:P(1,2) wlc_tkip_countermeasures:f(0,22) wlc:P(1,2) txstatus:P(6,28) dummy:P(66,2) scb:r(246,35) wlc_disassociate_client:F(0,1) wlc:P(1,2) send_disassociate:P(4,1) fn:P(252,70) arg:P(66,2) scb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28) scb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28) wlc_sup_mic_error:F(4,1)wlc:P(1,2) group:P(4,1) wlc_getrand:F(0,22) wlc:P(1,2) buf:P(249,7) buflen:P(0,1) rand:r(0,1) wlc_pkt_callback_append:F(0,22) wlc:P(1,2) new_pkt:P(66,2) pkt:P(66,2) idx:r(4,3) wlc_pkt_callback_register:F(0,1) wlc:P(1,2) fn:P(252,70) arg:P(66,2) pkt:P(66,2) pcb:r(1,87)=*(252,73) i:r(4,3) pcb:r(1,87) i:r(4,3) 
На выходе (test.out):

Код: Выделить всё

/* begin of function: wlc_authresp_client:f(0,22)  /*

wlc_authresp_client:f(0,22)  wlc:P(1,2) rxh:p(256,3) hdr:P(1,66) body:P(66,2) len:p(6,28)
{
    len:r(6,28) auth_alg:r(4,4) auth_seq:r(4,4) auth_status:r(4,4) challenge:r(249,7) scb:r(246,35) pkt:r(66,2)
}


/* begin of function: wlc_clear_hw_association:F(0,22)  /*

wlc_clear_hw_association:F(0,22)  wlc:P(1,2)
{
    regs:r(252,114) rs:(246,4)
}


/* begin of function: wlc_join_start_ibss:f(0,1)  /*

wlc_join_start_ibss:f(0,1)  wlc:P(1,2) ssid:P(1,16) ssid_len:P(0,1)
{
    bi:(246,15) band:r(252,116) chspec:r(215,1) bi:(246,15) band:r(252,116) chspec:r(215,1)
}


/* begin of function: wlc_ibss_disable:F(0,22)  /*

wlc_ibss_disable:F(0,22)  wlc:P(1,2)
{

}


/* begin of function: wlc_ibss_enable:F(0,22)  /*

wlc_ibss_enable:F(0,22)  wlc:P(1,2)
{

}


/* begin of function: wlc_tkip_countermeasures:f(0,22)  /*

wlc_tkip_countermeasures:f(0,22)  wlc:P(1,2) txstatus:P(6,28) dummy:P(66,2)
{
    scb:r(246,35)
}


/* begin of function: wlc_disassociate_client:F(0,1)  /*

wlc_disassociate_client:F(0,1)  wlc:P(1,2) send_disassociate:P(4,1) fn:P(252,70) arg:P(66,2)
{
    scb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28) scb:r(246,35) pkt:r(66,2) BSSID:(220,3) bsstype:r(6,28)
}


/* begin of function: wlc_sup_mic_error:F(4,1) /*

wlc_sup_mic_error:F(4,1) wlc:P(1,2) group:P(4,1)
{

}


/* begin of function: wlc_getrand:F(0,22)  /*

wlc_getrand:F(0,22)  wlc:P(1,2) buf:P(249,7) buflen:P(0,1)
{
    rand:r(0,1)
}


/* begin of function: wlc_pkt_callback_append:F(0,22)  /*

wlc_pkt_callback_append:F(0,22)  wlc:P(1,2) new_pkt:P(66,2) pkt:P(66,2)
{
    idx:r(4,3)
}


/* begin of function: wlc_pkt_callback_register:F(0,1)  /*

wlc_pkt_callback_register:F(0,1)  wlc:P(1,2) fn:P(252,70) arg:P(66,2) pkt:P(66,2)
{
    pcb:r(1,87)=*(252,73) i:r(4,3) pcb:r(1,87) i:r(4,3)
}
Если не секрет, что ковыряешь?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 22:08:47

а второй парсер для того чтобы более Cшные функции были?

дрова для wifi броадкома

тема в железе есть

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-09 23:01:35

Код: Выделить всё

/* begin of function: wlc_pkt_callback_register:F(0,1)  /*

wlc_pkt_callback_register:F(0,1)  wlc:P(1,2) fn:P(252,70) arg:P(66,2) pkt:P(66,2)
{
    pcb:r(1,87)=*(252,73) i:r(4,3) pcb:r(1,87) i:r(4,3)
}
лучще если будет так

Код: Выделить всё

wlc_pkt_callback_register:F(0,1)  wlc:P(1,2) fn:P(252,70) arg:P(66,2) pkt:P(66,2)
{
    pcb:r(1,87)=*(252,73)
    i:r(4,3)
    pcb:r(1,87)
    i:r(4,3)
}
и второй вариант
лучще если будет так

Код: Выделить всё

wlc_pkt_callback_register(wlc, fn, arg, pkt)
{
    pcb:r(1,87)=*(252,73)
    i:r(4,3)
    pcb:r(1,87)
    i:r(4,3)
}

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: распарсить текст

Непрочитанное сообщение Yam » 2008-11-10 1:33:36

Скрипт:

Код: Выделить всё

#!/bin/sh

in_file=./test.in
out_file=./test.out
out_c=./test.c

cat $in_file \
| sed -E 's/([a-z_0-9]+:[Ff]+\([0-9,]+\) ?)(([a-zA-Z_0-9]+:[Pp]+\([0-9,]+\) ?)+)(([A-Za-z_0-9]+:?[^FfPp]?\([0-9,]+\)[=\*]*\(?[0-9,]*\)? ?)*)/\
\/* begin of function: \1 *\/\
\
\1\2\
{\
    \4\
}\
\
/g' > $out_file

cat $out_file \
| awk '{ FS = " ";
    if ( match($1,"^[a-z_0-9]+:[Ff]") > 0) {
        split($1,arr,":")
        str = arr[1]"("
        for (i=2;i<NF;i++){
        split($i,arr,":")
            str = str arr[1]","
        }
        split($NF,arr,":")
        str = str arr[1]")"
        print str
    }
    if ( match($0,"^[{]+") > 0) {
        print $0
    }
    if ( match($0,"^[}|/]+") > 0) {
        print $0 "\n"
    }
    if ( match($0,"^[^a-z_0-9{}/]+") > 0) {
        for (i=1;i<=NF;i++){
            print "\t" $i
        }
    }
  }' > $out_c
Input:

Код: Выделить всё

wlc_authresp_client:f(0,22) wlc:P(1,2) rxh:p(256,3) hdr:P(1,66) body:P(66,2) len:p(6,28) len:r(6,28) auth_alg:r(4,4) auth_seq:r(4,4) auth_status:r(4,4) challenge:r(249,7) scb:r(246,35) pkt:r(66,2) 
Output (raw):

Код: Выделить всё

/* begin of function: wlc_authresp_client:f(0,22)  */

wlc_authresp_client:f(0,22) wlc:P(1,2) rxh:p(256,3) hdr:P(1,66) body:P(66,2) len:p(6,28)
{
    len:r(6,28) auth_alg:r(4,4) auth_seq:r(4,4) auth_status:r(4,4) challenge:r(249,7) scb:r(246,35) pkt:r(66,2)
}
Output C-style:

Код: Выделить всё

/* begin of function: wlc_authresp_client:f(0,22)  */

wlc_authresp_client(wlc,rxh,hdr,body,len)
{
        len:r(6,28)
        auth_alg:r(4,4)
        auth_seq:r(4,4)
        auth_status:r(4,4)
        challenge:r(249,7)
        scb:r(246,35)
        pkt:r(66,2)
}
Конечно не верх изящества, но работает.
Последний раз редактировалось Yam 2008-11-10 8:25:50, всего редактировалось 1 раз.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 1:43:09

покатит
ночью потестирую))


просто если буду делать в ручную
то клаву убью нах
а ноутбучная клава дороже обычной))

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 9:06:56

что то не срабатвает парсер
валиться(((
я уже как ему файл не подсовывал....
даже тупо такой же форматный... нехотит

а можно сделать так ?
strings wl_apsta.o | парсер > результат

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: распарсить текст

Непрочитанное сообщение Alex Keda » 2008-11-10 13:03:39

к асусу фирмварь ковыряешь, судя по названию? =)
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 13:27:30

у них у всех одинаковые название
это от линксиса последний

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: распарсить текст

Непрочитанное сообщение Yam » 2008-11-10 18:28:35

Скрипт работает и честно парсит то, что ему было предложено в первом посте. И естесвенно лажает на strings wl_apsta.o, там куча мусора, да и конструкции встречаются посложней. В итоге родился такой монстрик:
cat script.sh:

Код: Выделить всё

#!/bin/sh

cat $1 \
| grep -E '([a-zA-Z_0-9]+:[a-zA-Z0-9]+\([0-9,]+\)[=\*]*\(?[0-9,]*\)?[=\*k]*\(?[0-9,]*\)? ?)' \
| sed  -E 's/;-?[0-9]*//g' \
| tr "\n" " " \
| sed  -E 's/([A-Za-z_0-9]+:[Ff]+\([0-9,]+\) ?)(([a-zA-Z_0-9]+:[Pp]+\([0-9,]+\)[=\*]*\(?[0-9,]*\)?[=\*a-zA-Z]{0,5}\(?[0-9,]*\)? ?)+)(([A-Za-z_0-9]+:?[^FfPp]?\([0-9,]+\)[=\*]*\(?[0-9,]*\)?[=\*a-zA-Z]{0,5}\(?[0-9,]*\)? ?)*)/\
XxX\/* begin of function: \1 *\/\
XxX\
XxX\1\2\
XxX{\
XxX     \4\
XxX}\
YyY/g' \
| grep ^XxX \
| sed -E 's/^XxX//' \
| awk '{ FS = " ";
    if ( match($1,"^[a-z_0-9]+:[Ff]") > 0) {
        split($1,arr,":")
        str = arr[1]"("
        for (i=2;i<NF;i++){
        split($i,arr,":")
            str = str arr[1]","
        }
        split($NF,arr,":")
        str = str arr[1]")"
        print str
    }
    if ( match($0,"^[{]+") > 0) {
        print $0
    }
    if ( match($0,"^[}|/]+") > 0) {
        print $0 "\n"
    }
    if ( match($0,"^[^a-z_0-9{}/]+") > 0) {
        for (i=1;i<=NF;i++){
            print "\t" $i
        }
    }
  }' > $1.c
юзается так:

Код: Выделить всё

strings wl_apsta.o > out.raw && ./script.sh out.raw
на выходе будет файл out.raw.c

Пример: http://pastebin.ca/1250344

Надеюсь поможет.
Последний раз редактировалось Yam 2008-11-10 18:33:24, всего редактировалось 1 раз.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 18:32:57

будем проверять...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 18:44:47

не срабатывает
ошибка

ты на какой ос делаешь?
или может исмволы какие пропадают при копировании

скнинь скрипт в аплоад на фтп

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 18:52:07

где то сдесь валиться

Код: Выделить всё

| sed  -E 's/([A-Za-z_0-9]+:[Ff]+\([0-9,]+\) ?)(([a-zA-Z_0-9]+:[Pp]+\([0-9,]+\)[=\*]*\(?[0-9,]*\)?[=\*a-zA-Z]{0,5}\(?[0-9,]*\)? ?)+)(([A-Za-z_0-9]+:?[^FfPp]?\([0-9,]+\)[=\*]*\(?[0-9,]*\)?[=\*a-zA-Z]{0,5}\(?[0-9,]*\)? ?)*)/\
XxX\/* begin of function: \1 *\/\
XxX\
XxX\1\2\
XxX{\
XxX     \4\
XxX}\
YyY/g' \

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: распарсить текст

Непрочитанное сообщение Yam » 2008-11-10 19:04:27

upload/parse_raw2c.sh
upload/parse_sample_out.c

FreeBSD 7.0R

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 19:18:31

отработало
токо не все
обрати внимание
функции
PRF
fPRF
SHA1Reset
SHa1Result
init_F
do_F
не взяло

ну просто функцию F ясное дело оно не возьмет

и еще нет функций в капсе
примеру READ_GPHY_TABLE_ENT:f(4,4)
и еше

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: распарсить текст

Непрочитанное сообщение Yam » 2008-11-10 19:25:00

они там есть, только оформлены не верно, в алгоритме на awk был недочет, там только мелкие матчились в качестве имени, ну и опечатка в этом же алгоритме вместо <=NF написано <NF в самом конце.
Последний раз редактировалось Yam 2008-11-10 19:39:40, всего редактировалось 3 раза.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: распарсить текст

Непрочитанное сообщение paradox » 2008-11-10 19:27:13

кстати а какие символы форум скушал?
вроде

Код: Выделить всё

 должен выдавать все как есть
без искажений