Re: aiutino regular expression in sed
* 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
Reply to: