[Tech] per gli scriptaroli
Franco Bagnoli
franco.bagnoli@unifi.it
Sab 22 Dic 2007 23:08:07 CET
On Dec 22, 2007 7:28 PM, Leonardo Boselli <leo@dicea.unifi.it> wrote:
> > Non voglio essere brutale, è veramente un consiglio spassionato.
>
> nopn sono brutale ma: ho scritto
> (file: nof.pl)
> while (<>) { @s = split('[\t :,]') ;
> print "s[0]\n";
>
> e il programma funziona QUASI ... come faccio a fargli ignorare eventuali
> blank iniziali ?
> e un modo più elegante per richiamarlo che fare
> cat file1 file2 file3 | perl nof.pl | grep -v "#" | grep -v "@" > file0
per questo ti avevo detto di leggere perlrun:
1) l'operatore <> è magico e apre i file uno dopo l'altro, per cui
nof.pl file1 file2 file3
fa quello che vuoi
2) lo switch -n mette il loop
while (<>) {
... # your program goes here
}
3) lo switch -a attiva l'autosplit (-F per definire il delimitatore)
4) infine lo switch -e permette di definire quello che vuoi eseguire,
per cui dovrebbe essere qualcosa del genere
perl -an -F':' -F',' -F'\s' -e 'print "$F[0]\n" unless /^[ #@\n]/'
file1 file2 file3
ma la virgola non mi funziona come separatore, non so perché, quindi meglio
perl -ne 'unless (/^[ #@\n]/) {@F = split /[\t:\s,]/; print
"$F[0]\n"}' file1 file2 file3
--
Franco Bagnoli <franco.bagnoli@unifi.it> <franco.bagnoli@gmail.com>
Lab. Fisica dei Sistemi Complessi, Dip. Energetica & CSDC
Universita' di Firenze, via S. Marta, 3 I-50139 Firenze, Italy.
Tel. +39 0554796592, fax: +39 0554796342
Maggiori informazioni sulla lista
flug-tech