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

Daniel von Asmuth asmuth op bakunin.xs4all.nl
Do Jul 12 09:13:53 CEST 2007


On Wed, Jul 11, 2007 at 09:50:30PM +0200, Hugo van der Kooij wrote:
> 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.
> 
Nou ben ik meer sed-ist dan perl-diver, dus ik zou ongeveer zo doen:
 sed -e
"/[0-9A-F]\+\/[0-9A-F]\+\/\([0-9A-F]\+\)\.\([0-9]\+\)\.\(.*\)\/.*\/.*/s//\1.\2.\3/"

Met vriendenlijke groet,



Daniel von Asmuth

-- 
	/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
       <  Smoking shortens the Life expectancy of your Cigarettes  >
	\_________________________________________________________/



More information about the Linux mailing list