[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