Re: punkte zählen
Hallo Roland M. Kruggel, hallo auch an alle anderen
Am Donnerstag, 9. Februar 2006 08:12 schrieb Roland M. Kruggel:
> Am Donnerstag, 9. Februar 2006 01:01 schrieb Joerg Sommer:
> > Hallo Roland,
> >
> > Roland M. Kruggel <rk-liste@gmx.de> wrote:
> > > Hallo Liste,
> > >
> > > ich muss einen filename mit der bash 'zerschneiden'
> > >
> > > das format ist
> > > aa.name.txt
> > > oder
> > > b.ccc.name.txt
> > >
> > > als resultat brauche ich in drei variablen 'aa', 'name' und 'txt'
> > > bzw. 'b.ccc', 'name' und 'txt'
> >
> > last=${var##*.}
> > var=${var%.$last}
> > middle=${var##*.}
> > var=${var%.$middle}
> > first=$var
>
> Auch gut. Nicht ganz so 'verwirrend' wie das von jens. Ich werde
> beide notieren.
>
> Kannst du mit noch bitte grundsätzlich die '##' und '%' kurz
> erklären?
Vgl. man bash (ziehmlich weit unten):
${Parameter##Muster} entfernt den längsten mit Muster übereinstimmenden
Teil aus Parameter, beginnend vom Anfang von Parameter. Bei nur einer #
wäre es der kürzeste übereinstimmende Teil (hier nur bis zum ersten
Punkt). Joker können verwendet werden.
"*." wären hier also beliebige Zeichen, gefolgt von einem Punkt.
Mit dem % (bzw. %%) wird ab dem Ende von Parameter gesucht.
Ist das Muster eindeutig, ist es egal, ob man ein oder zwei Operatoren
verwendet.
Ich persönlich finde die andere Lösung schöner (weil universeller durch
die Verwendung von RegEx). Allerdings ist es auch immer wieder schön
daran erinnert zu werden, welch mächtige Werkzeuge doch die Shell so
enthält (und meist viel zu selten nutzt).
--
Gruß
MaxX
Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen.
Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Reply to: