Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Linux - Fedora & Grep
Forum - Linux - Fedora & Grep

Avatar
matteo88roma (Normal User)
Rookie


Messaggi: 25
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 14:44
Mercoledì, 24/03/2010
Salve ragazzi/e, scrivo qui per avere un consiglio sul seguente problema.
Utilizzo Fedora 12 (Constantine) e grep non funziona bene.

Ho necessità di filtrare un argomento in un bash script per verificare che sia un nome Java valido, quindi ho scritto la seguente regular expression:

Codice sorgente - presumibilmente Plain Text

  1. ^[A-Z]+[a-z]*$



Testandola tramite vari tester reperibili online, ho verificato che funziona correttamente.
Nel mio script è possibile utilizzare solo un argomento, quindi $1.

La porzione di codice che effettua il controllo è la seguente:

Codice sorgente - presumibilmente Plain Text

  1. echo $1 | grep -E '^[A-Z]+[a-z]*$'



Se inserisco ad esempio String, File, System, C, B... il matching viene eseguito correttamente.
Il problema viene anche quando inserisco stringhe teoricamente scorrette.
Se inserisco "string", "hello" il matching ha successo! :noway: (nonostante io abbia specificato che la prima lettera deve essere maiuscola!)

Come Shell utilizzo la bash e uso l'ultima versione di grep disponibile, la 2.6.
Non utilizzo alias per i vari comandi.

Nota Divertente: sugli altri linux non ho questo problema, è una cosa ristretta al mio laptop! xD:rotfl:

Grazie mille per il vostro aiuto!


PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 14:56
Mercoledì, 24/03/2010
O_O
prova con il comando egrep.

se non funziona, prova a consultare la mailing list di grep e i forum di fedora... se le cose stanno come dici, potrebbe trattarsi di un bug di quella particolare versione, o un bug introdotto dal team che ha compilato e impacchettato grep (quindi redhat/fedora).

PS: potrebbe anche darsi che usa un formato diverse per le regex.. consulta anche il man di grep ed eventuali file di configurazione in /etc/ e nella tua home..

Ultima modifica effettuata da TheKaneB il 24/03/2010 alle 14:59
PM Quote
Avatar
matteo88roma (Normal User)
Rookie


Messaggi: 25
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 15:34
Mercoledì, 24/03/2010
Un mio amico mi ha fatto fare una prova....

Invece di...

Codice sorgente - presumibilmente Plain Text

  1. echo $1 | grep -E '^[A-Z]+[a-z]*$'



Mi ha fatto scrivere...

Codice sorgente - presumibilmente Plain Text

  1. echo $1 | grep -E '^[QWERTYUIOPASDFGHJKLZXCVBNM]+[a-z]*$'



Anche se è una cosa orrenda da vedere, funziona! :om:
Può essere che non interpreta il range A-Z? o_o

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 15:49
Mercoledì, 24/03/2010
se non interpreta il range A-Z, non interpreta nemmeno a-z...

prova a sostituire [A-Z] con [:upper:] e [a-z] con [:lower:]

Ultima modifica effettuata da TheKaneB il 24/03/2010 alle 15:51
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 15:53
Mercoledì, 24/03/2010
forse ho trovato:
Testo quotato


Many locales sort characters in dictio-
       nary  order,  and in these locales [a-d] is typically not equivalent to
       [abcd]; it might be equivalent to [aBbCcDd], for  example.   To    obtain
       the  traditional interpretation of bracket expressions, you can use the
       C locale by setting the LC_ALL environment variable to the value C.



da http://unixhelp.ed.ac.uk/CGI/man-cgi?grep

quindi prova con
export LC_ALL="C"
prima di eseguire lo script (magari salva il vecchio contenuto in una variabile temporanea e ripristinalo all'uscita).

Ultima modifica effettuata da TheKaneB il 24/03/2010 alle 15:54
PM Quote
Avatar
matteo88roma (Normal User)
Rookie


Messaggi: 25
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 16:16
Mercoledì, 24/03/2010
Funziona!!!! Mitico ^^

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 16:21
Mercoledì, 24/03/2010
man pages rulez :D

PM Quote