* On Mon, 09 Nov 2009, at 11:43 +0100, Paolo Sala wrote: > Ciao a tutti, come si fa a matchare tutto fino a che non contiene > opzionalmente una parola? > > Ho dei file di testo tipo: > [...] > Sample Name: 909388-001 1° 1:10 > [...] > > oppure > [...] > Sample Name: Std livello 3 Injection > Volume: 25,0 > [...] > > oppure > [...] > Sample Name: 909436-002 1:2 Injection > Volume: 25,0 > [...] > > [...]
Se ho capito bene ecco un esempio: $ cat file1.tmp Sample Name: 909388-001 1° 1:10 Sample Name: Std livello 3 Injection Volume: 25,0 Sample Name: 909436-002 1:2 Injection Volume: 25,0 $ cat script.sed /^Sample Name:/ { s/[ \t]*Injection.*// s/^Sample Name:[ \t]*// p } $ sed -nf script.sed file1.tmp 909388-001 1° 1:10 Std livello 3 909436-002 1:2 $ Lo script sed seleziona solo le righe che servono, ne elimina la parte finale se necessario, poi elimina la parte iniziale e poi stampa ciò che rimane, cioè uno o più campi. Sed è eseguito con l'opzione '-n' in modo da non trovare sullo standard output tutte le altre righe. Saluti, alfredo -- 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