|
|||||||||||||||||||||||||||
On Sat, 2 Nov 2002, Bjørn Bille Højte wrote:
> On Sat, 2 Nov 2002, Ole Tange wrote:
>
> > Jeg tror, du skal give os to korte eksempler på, hvad stier og sletstier
> > kunne indeholde.
>
> Okay... Filerne indeholder reelt md5summer og filnavne (relative), og er
> altså lister af md5summer og filnavne. For at forsimple det til mit
> problem med "/" undlod jeg at nævne md5summerne
Ahahh. Så vi taler ikke om, at sletstiler indeholder delvise matches
(f.eks. kunne den indeholde usr/local), men matchning af hele linjer.
Det gør problemet meget nemmere at løse:
perl -ne 'sslug@sslug sletstier`;@sslug@sslug@a;} $s{$_} or print' stier
Denne løsning virker også, hvis '|' (eller andet regexp snask) indgår i
filnavnet og er extremt hurtig i forhold til /@a/-udgaven.
> > Mit gæt på løsning er:
:
> > perl -e 'chomp(@a=`cat /tmp/sletstier`);$"="|"; print grep !/@a/o, <>'
> > stier
:
> Er det rigtigt forstået at grunden til at det virker er at det er "|" der
> nu er seperator i stedet for "\n", og det hele derfor virker som et
> "eller" udtryk i matchningen?
Næsten. "\n" bliver fjernet af chomp. "|" bliver indsat ved udregningen af
/@a/. Der bliver fjernet n "\n"'er, men kun indsat n-1 "|"'er.
> Hvordan har perl det med sådanne udtryk der har MANGE (tusinder)
> eksklusioner? Det kan jo gå hen og blive et temmelig stort array.
Fra man perl:
Unlike most Unix utilities, Perl does not arbitrarily limit the size of
your data--if you've got the memory, Perl can slurp in your whole file
as a single string.
/Ole
--
Registered Linux user #194. Get counted: http://counter.li.org
http://ole.tange.dk
|
||||||||||||||
|
||||||||||||||