[linux] Re: perl (zoek en vervang) script vraag

Hugo van der Kooij hvdkooij op vanderkooij.org
Wo Jul 11 21:50:30 CEST 2007


On Wed, 11 Jul 2007, Wybo Dekker wrote:

> Hugo van der Kooij wrote:
>> Hoi,
>>
>> Als ik een variabele met een string als:
>> 7D/8D/7D8D01B6BCA36B1634BA0459E71B4F17.198339.win32/data001/01.exe
>>
>> Is de volgende regel dan correct in perl?
>> $samplename =~ s/\.(.*)\/.*/$1/;
>>
>> Om te komen tot het resultaat:
>> 7D/8D/7D8D01B6BCA36B1634BA0459E71B4F17.198339.win32
>>
>> Ik heb het gevoel dat dit net zo goed als resultaat kan geven:
>> 7D/8D/7D8D01B6BCA36B1634BA0459E71B4F17.198339.win32/data001
>
> niet net zo goed: dat doet het gewoon, en dat moet ook. Als je slechts
> tot de eerstvolgende / wilt gaan dan moet je dit doen:
>
> $samplename =~ s/\.(.*?)\/.*/$1/;
>
> (.* pakt zoveel mogelijk, .*? pakt zo weinig mogelijk)

Ahh. Ik zie wel een andere snag. Want ik vergat de . weer terug te zetten.

$samplename =~ s/(\..*?)\/.*/$1/;

Zo zou het zelfs niet meer uit mogen maken van waar het consumeren van de 
. begint. Maar als ik de uitleg goed begrepen heb zou $1 daar .win32 
moeten terugzetten in de zoek en vervang opdracht en dus alles vanaf de 
eerste slash NA de punt(en) moeten verwijderen.

Hugo.

-- 
 	hvdkooij op vanderkooij.org	http://hugo.vanderkooij.org/
 	    This message is using 100% recycled electrons.

 	Some men see computers as they are and say "Windows"
 	I use computers with Linux and say "Why Windows?"
 		(Thanks JFK, for the insight.)



More information about the Linux mailing list