[Linux-Biella] Script bash che prende dati dallo standard input come grep/awk/sed: da pipe, tail ecc...

Paul TT paultt a bilug.linux.it
Lun 25 Maggio 2009 15:49:40 CEST


vallini.daniele a bilug.linux.it wrote:
> On Sun, May 24, 2009 at 01:00:12AM +0200, Daniele Segato wrote:
>
>   
>> Il giorno ven, 22/05/2009 alle 18.13 +0200,
>> vallini.daniele a bilug.linux.it ha scritto:
>>     
>>> Se vuoi immissione in piu' righe si deve raggirare il problema della NL.
>>>       
>> come?
>>     
>
> bash non supporta array multidimensionali, ogni linea deve essere un array
> monodimensionale.
> Non ho mai avuto esperienza di tali casini ma se intendi immettere solo due o
> tre righe di variabili da standard input farei una cosa simile:
>
> ----------------------------------------------------------------------
> #! /bin/sh
>
> leggo(){
> echo " 
>    immetti la prima serie di variabili seguita da Inv 
> "
> read x       ##### $x e' il primo array monodimensionale
>  if [ "$x" = "" ]
>   then
>    echo " 
>    sveglia figliolo, chi dorme non piglia pesci
>    "
>    leggo      ###### ritorno alla funzione poiche' nulla e' stato immesso
>  fi
> leggo1    #### funzione di lettura della seconda linea
> }
>
> leggo1(){
> echo " 
>    immetti la seconda serie di variabili seguita da Inv
>    altrimenti premi solamente Inv per procedere 
> "
> read y      ###### $y e' il secondo array monodimensionale
>  if [ "$y" = "" ]
>   then
>    successiva  #nome della funzione successiva
>   else
>    leggo2   # funzione di lettura della terza linea
>  fi
> }
>
> leggo2(){
> echo " 
>    immetti la terza serie di variabili seguita da Inv
>    altrimenti premi solamente Inv per procedere 
> "
> read z    ####### $z e' il terzo array monodimensionale
> echo "
>    Non prevedo altre serie di variabili
>    se vuoi scrivere il nuovo testamento
>    e' preferibile un editor
> "
> successiva                           #nome della successiva funzione
> }
>
> successiva(){
> echo " 
>    la funzione successiva e' ancora da scrivere 
>    ora ho altro da fare 
> "
> exit
> }
>
> leggo
>
> ----------------------------------------------------------------------
>
>
>   
>>> Perl e' il piu' adatto al parsing di file, ti risparmia grep,sed,awk ed
>>> altre consimili rumente.
>>>       
>> si ho capito..
>> ma supponiamo che NON ESISTA altro che i tool GNU
>>     
>
> Bene ma perl e' sempre presente in una distribuzione Linux, molti programmi
> sono scritti in perl, te ne cito a caso prendendo quelli che iniziano per d:
>
> debconf vari, defoma, dh vari, dirsplit, dpkg vari,
>   
si', non ho tempo di vardare, ma tra l'altro, tra i programmi gnu (e 
intendo per gnu.org) direi che qualcosa scritto in perl ci sia ;P
> ....
>> ho uno script che dato un file mi estrae dei dati analizzando riga per
>> riga? (o pił righe alla volta?)
>>
>> bene..
>>
>> mi piacerebbe poter lanciare quello script su un tail del file
>>     
>
> Se ho capito giusto, se e' per analizzare ulteriormente l'output del tail
> personalmente, per non allungare troppo il piping ed avere dei punti di
> debug manderei l'output del tail su un file, quindi lancerei il tuo nuovo
> script con input quel file da ulteriormente analizzare.
>   
mah, per provare si', ma se poi funzica come deve, il pipe/ridirezione 
non sono affatto da sottovalutare, anzi.....
> Cosa deve fare il secondo script sull'output del tail?
>   


-- 
Keep Moving Forward




Maggiori informazioni sulla lista Linux