[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: