On Friday 14 November 2008 17:52, Petru Ratiu wrote:
> 2008/11/14 Alex <[EMAIL PROTECTED]>:
> > Din cite imi aduc aminte, la regexp, \s marcheaza un spatiu, iar \s+
> > marcheaza mai multe spatii. eu vreau sa scot dintr-un fisier toate
> > liniile care incep cu unul sau mai multe spatii urmate de litera P
> >
> > Cum e corect: cu \s sau cu \s+, ca vad ca la mine ambele expresii produc
> > acelasi rezultat :-(
>
> [\s+] nu inseamna ce vrei tu sa insemne

NU ESTE [\s+] ci [ \s+]!

Ai gasit bug-ul fara sa stii :-)). Deci, expresia corecta ar fi: grep -E 
'^[ ]+[P]' test.txt sau ca tine fara extended regexp, grep  '^[ ]\+P' 
test.txt

> [] inseamna orice caracter din lista, + e interpretat ca atare.

dap, asa este, doar ca in lista mea, inainte de \s+ eu aveam un spatiu, pe 
care grep-ul in gasea de fiecare data si in consecinta, rezultatul celor doua 
grep-uri era identic si foarte surprinzator. confuzia a pornit de la \s sau 
\s+ care merg binemersi cu perl, sed, etc, dar nu si aici. Aici regexpul asa 
cum era scris [ \s+] facea match pe orice linie care continea la inceput 
whitespace sau \ sau s sau +!

Weekend placut,
Alx

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui