bash-funktion

Post Reply
Message
Author
andre

bash-funktion

#1 Post by andre »

hi,
letztens hatte ich hier gefragt wie man aus einem string "./foobar/foo.bar" die endung ".bar" und die ersten 2 zeichen entfernen kann.
nachdem mir jochen die antwort hierher gepostet hatte, hatte ich wenige tage spaeter eine ellegantere loesung:
ich ging direkt vom wurzelverzeihnis "/" aus und entfernte die endung per "basename foo.bar .bar". leider hab ich mir das posting nicht gesichert, und ich finds auch nicht wieder..

und jetzt hab ich ein problem, wo ich nicht von "/" ausgehen kann <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">
deshalb nochmal die frage: wie kann ich den string "./foobar/foo.bar" in "foobar/foo.bar" aendern.

thnxs,
andre


Jochen

Re: bash-funktion

#3 Post by Jochen »

Ups, das war jetzt 2mal der gleiche Link. Ich hatte eigentlich noch einen anderen angeben wollen; geh mal die PL-Suche, im Nachrichten-Text nach "foobar" suchen (Forum Allgemeine Fragen).

Jochen

andre

Re: bash-funktion

#4 Post by andre »

hi,
thnxs <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

andre

andre

Re: bash-funktion

#5 Post by andre »

hi,
hilft mir doch nicht weiter - irgentwie bekomm ich die textverarbeitung per bash-script noch nicht ganz auf die reihe...

kannst du mir noch kurz zeigen wie ich aus "./foo/bar" ein reines "foo/bar" erstellen kann?
ein 'echo "./foo/bar" | cut -d "." -f2' entfernt schonmal den punkt, aber wie bekomm ich nun das erste "/" weg?

gruss,
andre

Jochen

Re: bash-funktion

#6 Post by Jochen »

Ganz analog zu "${0%.foobar.sh}", welches ein ".foobar.sh" an Ende von $0 löscht, existiert auch mit # bzw. ## die Möglichkeit, Zeichenketten am Anfang einer Variable zu unterdrücken:<pre>echo ${0#./}</pre>Sollen generell die ersten 2 Zeichen weggeschmissen werden, würde man <pre>echo ${0#??}</pre>verwenden. Lies in der Manual-Page zu bash jetzt wirklich mal die Abschnitt "Parameter Substitution" und experimentiere damit ein wenig.

Solltest du mal nicht mit der bash arbeiten können, gibt es viele andere Möglichkeiten, das Ziel zu erreichen:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
echo $0 | sed 's/^..//'
expr $0 : '\..\(.*\)'
echo $0 | tail -c +2
echo $0 | awk '{print substr($0,3)}'
</font><hr></pre></blockquote>usw. usf. Generell würde ich die Beschäftigung mit Regulären Ausdrücken empfehlen; die sind mächtig, vielseitig zu verwenden und in vielen UNIX-Tools zu verwenden: sed, awk, perl, vi, emacs, *grep u.v.a.m.

Jochen

Jochen

andre

Re: bash-funktion

#7 Post by andre »

hi,

thnxs nochmal...
ich werd wohl nicht um die kapitel rum kommen... ich hab hier schon zichmal wegen solchem kram nachfragen muessen <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">

gruss,
andre

Post Reply