[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: