problema con grep [RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
G_e_r_o_n_i_m_o
Prode Principiante
Messaggi: 97
Iscrizione: lunedì 19 settembre 2016, 12:26
Desktop: xubuntu
Distribuzione: Xubuntu 16.04.1 LTS

problema con grep [RISOLTO]

Messaggio da G_e_r_o_n_i_m_o »

Salve a tutti,
sono alle prese con la shell e non riesco a capire cosa fa il seguente comando:

Codice: Seleziona tutto

grep -E '^.*\>1[2-9]\.{6}.*$' ./prova/*
Allora .... grep mostra le linee che corrispondono al modello cercato .... utilizzando il flag -E abilito l'utilizzo delle espressioni regolari estese e quindi posso usare i caratteri ?,+,{,}, |, ( e ) senza anteporre il \.
Quindi questo comando dovrebbe ricercare le righe che iniziano con una qualsiasi parola seguita da un 1 seguito da un numero tra 2 e 9 seguito da 6 punti seguiti da qualsiasi sequenza di caratteri.
In pratica mi dovrebbe visualizzare una riga del tipo:

Codice: Seleziona tutto

asdasd 12......asdfsdf
ma non lo fà.
Qualcuno sa indicarmi la via? :muro:
Ultima modifica di G_e_r_o_n_i_m_o il lunedì 20 febbraio 2017, 7:16, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: problema con grep

Messaggio da Zoff »

Dalla descrizione sembra che \> sia di troppo.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
G_e_r_o_n_i_m_o
Prode Principiante
Messaggi: 97
Iscrizione: lunedì 19 settembre 2016, 12:26
Desktop: xubuntu
Distribuzione: Xubuntu 16.04.1 LTS

Re: problema con grep

Messaggio da G_e_r_o_n_i_m_o »

ecco... il problema è che la descrizione è la mia interpretazione di un comando che mi è stato assegnato .... pero l'esercizio prevede che io debba capire cosa fa il comando
G_e_r_o_n_i_m_o
Prode Principiante
Messaggi: 97
Iscrizione: lunedì 19 settembre 2016, 12:26
Desktop: xubuntu
Distribuzione: Xubuntu 16.04.1 LTS

Re: problema con grep

Messaggio da G_e_r_o_n_i_m_o »

togliendo nel pattern \> tutto è chiaro perchè il comando cerca la riga che inizia con un carattere qualsiasi ripetuto 0 o più volte seguito da 1 , poi da un numero compreso tra 2 e 9, seuito da 6 punti e terminante con un carattere qualsiasi ripetuto 0 o più volte ..... ma finchè lascio \> (posizionamento a fine parola ) non funziona .....
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: problema con grep

Messaggio da crap0101 »

il problema non è il `\>` ma lo spazio successivo prima del carattere `1`... la tua regex non matcha alcun whitespace e giustamente fallisce, mentre perchè faccia quello che vuoi (anche tenendo `\>`, se proprio vuoi) dovrebbe essere

Codice: Seleziona tutto

'^.*\>\s1[2-9]\.{6}.*$'
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
G_e_r_o_n_i_m_o
Prode Principiante
Messaggi: 97
Iscrizione: lunedì 19 settembre 2016, 12:26
Desktop: xubuntu
Distribuzione: Xubuntu 16.04.1 LTS

Re: problema con grep

Messaggio da G_e_r_o_n_i_m_o »

eurekaaaaaaaa ... così funziona .... nei miei appunti sulle regex non compariva minimamente \s ..... grazie crap

Però ho applicato lo stesso ragionamento su un secondo comando che mi da problemi e li non funonzia..... il comando è:

Codice: Seleziona tutto

grep '\<08\.\>.*$' file_esempio
\< posizionamento inizio parola
\. ottengo semplicemente un punto
\> posizionamento fine parola
.* ripetizione di un qualsiasi carattere zero o più volte
$ posizionamento a fine riga
cioè gli elementi li conosco tutti ma non riesco a dire cosa dovrebbe fare il comando assegnato .... così al volo mi verrebbe da pensare che cerca una parola che inizia per 0 seguito da un 8 e che termina con un . seguita poi da un qualsiasi carattere ripetuto 0 o più volte ma non restituisce il risultato sperato ..... puoi spiegarmi che succede?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: problema con grep

Messaggio da crap0101 »

uhm no, direi che così non può proprio funzionare: `\>` matcha a "fine parola" e per "parola" si intende una serie di caratteri compresi in [a-zA-Z0-9_]; il `.` non lo è, per cui...
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
G_e_r_o_n_i_m_o
Prode Principiante
Messaggi: 97
Iscrizione: lunedì 19 settembre 2016, 12:26
Desktop: xubuntu
Distribuzione: Xubuntu 16.04.1 LTS

Re: problema con grep

Messaggio da G_e_r_o_n_i_m_o »

Buongiorno crap ..... ti ringrazio mi hai tolto parecchi dubbi .... quindi risolto
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti