Re: fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
Il giorno 07 agosto 2009 22.22, Marco Romano  ha
scritto:

> Prova con (g)awk modificando il record separator:
>
> $ echo -n "foo##bar##" | awk -v 'RS=##' 1
>
>   Marco Romano.
>
>
>
Interessante... lo proverò a questo punto dopo le vacanz

grazie.
ff77


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Marco Romano

Prova con (g)awk modificando il record separator:

$ echo -n "foo##bar##" | awk -v 'RS=##' 1

In alternativa potresti usare qualche programma che limita la lunghezza 
delle righe, tipo fold:


echo {a..z} | fold -b20

così facendo però avresti il problema di dover gestire elementi a metà 
tra due righe.


Hope this helps!

--
Kind regards,
  Marco Romano.







--
Per REVOCARE l'iscrizione alla lista, inviare un email a 
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per

problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
Il giorno 07 agosto 2009 17.47, Fernando ff77  ha scritto:

>
>
>
> ho ricontrollato .. ma purtroppo la cosa non funziona perchè lo streaming
> in ingresso è una linea continua senza new-line ... quindi sed non
> esegue per verificare devi fare un echo -n  e vedrai che non funziona...
>
> qualche IDEA ???
>
> grazie.
> ff77
>

forse modificando IFS ?


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
Il giorno 07 agosto 2009 12.19, Fernando ff77  ha scritto:

>
> Il giorno 07 agosto 2009 12.10, Alessandro T.  ha
> scritto:
>
>>
>> sei sicuro di questo?
>> $echo "*1*1*33##*1*0*32##*#1*1*34*32*34##*1*0##" > prova
>> $ tail -f prova | sed 's/##/\n/g'
>> *1*1*33
>> *1*0*32
>> *#1*1*34*32*34
>> *1*0
>>
>> se poi, su un'altra shell, echo "*a*a*2##" >>prova
>> vedrai apparire *a*a*2 sulla prima shell.
>>
>> o forse non ho capito
>>
>
> chiedo scusa...
> e pensare che prima non ha funzionato ... sarà stata la fame 
>

ho ricontrollato .. ma purtroppo la cosa non funziona perchè lo streaming in
ingresso è una linea continua senza new-line ... quindi sed non esegue
per verificare devi fare un echo -n  e vedrai che non funziona...

qualche IDEA ???

grazie.
ff77


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
Il giorno 07 agosto 2009 15.28, Andrea Fabrizi  ha
scritto:

>
>
> Potresti utilizzare un named pipe (man mkfifo)
>
> Andrea
>

Grazie Andrea,
ho letto un pò in internet... ma non mi è ancora chiaro il funzionamento ...

ditemi se la logica è guista...

1- creo due pipe - una scrive e l'altra legge
mkfifo manda
mkfifo ricevi

2- redirigo e metto in background
tail -f manda | netcat 192.168.1.10 2000 | sed 's/##/\n/g > ricevi &

ora posso crearmi un ciclo while infinito che mi legge ricevi ... e me lo
elabora...
in base a ciò che legge.. può eventualmente inviare dati a manda...

tutto giusto ?

stasera provo .. purtroppo qui al lavoro non riesco a verificare con
certezza come si comporta il 192.168.1.10

grazie,
ciao
ff77


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Andrea Fabrizi
2009/8/7 Fernando ff77 

> chiedo scusa...
> e pensare che prima non ha funzionato ... sarà stata la fame 
>
> penso che la cosa migliore sia usare un file temporaneo di appoggio ..
> uno script mi prende e mi salva il flusso ..
> l'altro me lo visualizza e formatta
>
> oppure si può fare tutto in uno ?
>

Potresti utilizzare un named pipe (man mkfifo)

Andrea


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
Il giorno 07 agosto 2009 12.10, Alessandro T.  ha
scritto:

>
> sei sicuro di questo?
> $echo "*1*1*33##*1*0*32##*#1*1*34*32*34##*1*0##" > prova
> $ tail -f prova | sed 's/##/\n/g'
> *1*1*33
> *1*0*32
> *#1*1*34*32*34
> *1*0
>
> se poi, su un'altra shell, echo "*a*a*2##" >>prova
> vedrai apparire *a*a*2 sulla prima shell.
>
> o forse non ho capito
>

chiedo scusa...
e pensare che prima non ha funzionato ... sarà stata la fame 

penso che la cosa migliore sia usare un file temporaneo di appoggio ..
uno script mi prende e mi salva il flusso ..
l'altro me lo visualizza e formatta

oppure si può fare tutto in uno ?


grazie.
ciao, ff77


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Alessandro T.
Fernando ff77 ha scritto:
>
>
> Il giorno 07 agosto 2009 11.41, Paolo Sala  > ha scritto:
>
>
> > come prima cosa vorrei fare in modo che dopo ogni ## vada a capo ..
> Non ho ben capito, ma così non va bene?
> echo *1*1*33##*1*0*32##*#1*1*34*32*34##*1*0## | sed 's/##/\n/g'
>
>
> non va bene... perchè quella stringa mi proviene da un flusso continuo ..
>
> per provare salva quella riga in un file di prova
>
> e poi:
>
> tail -f prova | sed.
>
> non da nessun risultato perchè attende la fine del file .. purtoppo
> non ho mai la fine del file !!!

sei sicuro di questo?
$echo "*1*1*33##*1*0*32##*#1*1*34*32*34##*1*0##" > prova
$ tail -f prova | sed 's/##/\n/g'
*1*1*33
*1*0*32
*#1*1*34*32*34
*1*0

se poi, su un'altra shell, echo "*a*a*2##" >>prova
vedrai apparire *a*a*2 sulla prima shell.

o forse non ho capito

>
> grazie.
> ciao.

ciao
Ale


-- 
R: Perché leggiamo dall'alto al basso e da sinistra a destra.
D: Perché dovrei iniziare la risposta alla mail sotto il testo quotato?



--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: fare parsing in tempo reale..

2009-08-07 Per discussione Paolo Sala
Fernando ff77 scrisse in data 07/08/2009 11:52:
> per provare salva quella riga in un file di prova
>
> e poi:
>
> tail -f prova | sed.
>
> non da nessun risultato perchè attende la fine del file .. purtoppo
> non ho mai la fine del file !!!
Ma, veramente ho provato e funziona e mentre sed aspettava ho aggiunto
altri dati a prova e mano a mano che li aggiungevo sed li trasformava...

Continuo a non capire.

Ciao

Piviul


-- 
Per REVOCARE l'iscrizione alla lista, inviare un email a 
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
Il giorno 07 agosto 2009 11.41, Paolo Sala  ha scritto:

>
> > come prima cosa vorrei fare in modo che dopo ogni ## vada a capo ..
> Non ho ben capito, ma così non va bene?
> echo *1*1*33##*1*0*32##*#1*1*34*32*34##*1*0## | sed 's/##/\n/g'
>

non va bene... perchè quella stringa mi proviene da un flusso continuo ..

per provare salva quella riga in un file di prova

e poi:

tail -f prova | sed.

non da nessun risultato perchè attende la fine del file .. purtoppo non ho
mai la fine del file !!!

grazie.
ciao.


Re: fare parsing in tempo reale..

2009-08-07 Per discussione Paolo Sala
Fernando ff77 scrisse in data 07/08/2009 10:31:
> ciao a tutti.. mi spiego meglio..
>
> con netcat ricevo dati da una centralina in modo continuativo..
>
> il problema che sono emessi in modo sequenziale...
>
> es:
>
> *1*1*33##*1*0*32##*#1*1*34*32*34##*1*0##
>
> come vedete hanno lunghezza variabile.. l'unica certezza è che il ##
> indica il fine comando..
>
> come prima cosa vorrei fare in modo che dopo ogni ## vada a capo ..
Non ho ben capito, ma così non va bene?
echo *1*1*33##*1*0*32##*#1*1*34*32*34##*1*0## | sed 's/##/\n/g'

Ciao

Piviul


-- 
Per REVOCARE l'iscrizione alla lista, inviare un email a 
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



fare parsing in tempo reale..

2009-08-07 Per discussione Fernando ff77
ciao a tutti.. mi spiego meglio..

con netcat ricevo dati da una centralina in modo continuativo..

il problema che sono emessi in modo sequenziale...

es:

*1*1*33##*1*0*32##*#1*1*34*32*34##*1*0##

come vedete hanno lunghezza variabile.. l'unica certezza è che il ## indica
il fine comando..

come prima cosa vorrei fare in modo che dopo ogni ## vada a capo ..

la cosa ancora migliore sarebbe che mi passa il comando in una variabile da
poter formattare prima di scrivere a schermo..


qualche aiuto ? ho provato con un semplice sed  s/##/XX ma non funziona

grazie.
ff77

W Debian