On Thursday 18 January 2007 16:29, Lucio Crusca wrote: > Ciao *, > > ho un problema con le espressioni regolari (e chi non ne ha!): > $ cat > file.txt > aaa > aaaaa > > Ora voglio trovare tutte le righe che contengano non più di 3 volte > 'a' di fila: > > $ cat file.txt | grep 'a\{0,3\}' > aaa > aaaaa > > Perché mi trova anche la seconda riga? Non dovrebbe trovarmi solo la > prima?
Un conto è il contenuto dell'espressione, un conto il suo contorno. Per porre condizioni sui contorni si usano lookhaed e lookbehind. Che non sono supportate da gnu grep ed egrep. Con perl dovrebbe venire così perl -ne 'print if /(?<!a)a{0,3}(?!a)/' Chiaramente in questo caso risulta più semplice il grep -v aaaa già suggerito. Ciao, Daniele P.