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

Daniele Segato daniele.bilug a gmail.com
Dom 24 Maggio 2009 01:00:12 CEST


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?

> 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

> > echo "qualcosa" | mioscript.sh
> 
> ma vuoi appendere qualcosa al file o passargli un comando tramite quel
> "qualcosa"?

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

ho fatto degli script che mi estraggono informazioni dai log..
e per debugging mi verrebbe comodo poter fare qualcosa tipo:

tail -f miolog.log | mioscript.sh

quasi tutti gli script che ho fatto sono piuttosto "semplici" e lavorano
di pipe..
avevo poco tempo e non ci ho perso i millenni...

sono script del tipo (totalmente a caso):

grep -E 'qualcosa|qualcosaltro' $1 | sed 's/this/that/' | awk -F ','
'BEGIN { sfuff; } $0 ~ /those/ { otherStuff; } .... '

lo script è spezzato su più righe per comodità..
soprattutto la parte di awk.

se copio tutto in una sola riga e faccio:

tail -f mioLog | grep -E 'qualcosa|qualcosaltro' | sed 's/this/that/' |
awk -F ',' 'BEGIN { sfuff; } $0 ~ /those/ { otherStuff; } .... '

funziona...

mi chiedevo se c'era qualche metodo per ottenere un effetto simile
lanciando lo script

mi fa piacere che con perl si riesce, è bello ecc ecc... ma io voglio
sapere se si può fare senza perl... e se si come :)



Maggiori informazioni sulla lista Linux