Hi Hilmar,
On Mon, Feb 11, 2002 at 17:19:47 +0100, Hilmar Preusse wrote:
wieder hierher :-|. Gegeben ist ein Inputfile folgender Struktur:
cw.tx3.tx3Im3.tx3Im3SDMgr.tx3Im3SDDstSlTb.tx3Im3SDDstSlE.tx3Im3SDDstSlI.0 : INTEGER: 0 cw.tx3.tx3Im3.tx3Im3SDMgr.tx3Im3SDDstSlTb.tx3Im3SDDstSlE.tx3Im3SDDstSlI.1 : INTEGER: 1
[...]
Das soll mittels bash so geparsed werden, daß die letzte Zahl vor dem : zurückgegeben wird. Die Zahl der Elemente, die vorne stehen und durch Punkte getrennt sind, ist variabel.
Wie waers damit:
#!/bin/bash while read line do line="${line%%:*}" line="${line##*.}" echo $line done < inputfile
In der ersten Pattern-Substitution ${line%%:*} schneide ich von hinten das groesstmoegliche Muster ab, das mit ":" beginnt. In der zweiten Substitution ${line##*.} schneide ich von vorne das groesstmoegliche Muster ab, das auf "." endet.
Hab ich irgendwo einen Denkfehler, oder ist es wirklich so einfach? Vielleicht habe ich auch Dein Problem falsch verstanden. BTW, diese Methode kommt ohne externe Binaries aus, alles bash-intern.
bye, Chris