Pagina 1 di 1

egrep: concatenare comandi

Inviato: lunedì 28 luglio 2008, 14:37
da jack_the_ripper
ragazzi io avrei bisogno di filtrare un file di testo secondo le seguenti condizioni

Codice: Seleziona tutto

egrep -o 'parolachiave1( |\w)*' #caratteri alfanumerici e spazi tra la parola chiave 1 e un non-alfanumerico

egrep parolachiave2 #una riga intera che contiene la parola chiave 2

egrep -o parolachiave3=[0-9]{1,\} #tutti i numeri di una o più cifre che seguono la parola chiave 3
ora, io riesco a dare questi comandi separatamente, e i risultati sono esatti, quello che mi serve è "unire" questi tre filtri in modo da avere una cosa tipo "condizione uno OR condizione due OR condizione tre"...in modo da avere come output i pezzi di testo che rispondo a una o l'altra condizione, rispettando l'ordine originario del testo.
come si può fare?
:-\

Re: egrep: concatenare comandi

Inviato: lunedì 28 luglio 2008, 20:14
da giolock
Hai provato con qualcosa del genere?:

Codice: Seleziona tutto

egrep -o 'parolachiave1( |\w)*|^.*parolachiave2.*$|parolachiave3=[0-9]{1,\}'

Re: egrep: concatenare comandi

Inviato: martedì 29 luglio 2008, 10:03
da jack_the_ripper
quasi..mi restituisce i match per le prime due condizioni ma non per la terza..come mai?

già che ci sono, e se invece volessi il match esatto (egrep -o) anche della parola chiave 2?

risp grazieeeeeeeee  ;D

Re: egrep: concatenare comandi

Inviato: martedì 29 luglio 2008, 20:36
da giolock
probabilmente perchè racchiudendo tutto tra apici non devi mettere il carattere di escape \ prima di }

Codice: Seleziona tutto

egrep -o 'parolachiave1( |\w)*|^.*parolachiave2.*$|parolachiave3=[0-9]{1,}'
per il match esatto è molto semplice:

Codice: Seleziona tutto

egrep -o 'parolachiave1( |\w)*|parolachiave2|parolachiave3=[0-9]{1,\}'
i caratteri ^ e $ indicano inizio e fine linea mentre .* indica una sequenza qualsiasi di caratteri, anche di lunghezza 0.