shell script, teil von zeile wegschneiden

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/shell_script_teil_von_zeile_wegschneiden_183500/page_1 - zur Vollversion wechseln!


pate schrieb am 10.08.2007 um 00:53

Ich spiele mich schon den halben Abend herum, ich habe folgenden String in der Variablen $rardl
/this/is/a/dir/and/this/a.rar
ich möchte auf das ergebnis kommen:
/this/is/a/dir/and/this

ich dachte zuerst an cut, aber wie rückwärts anwenden? (mit / als delimiter und dann die ersten 6 felder nehmen und ausgeben geht nicht, weil die pfade später immer anders sein werden)
fix ist nur, dass immer alles nach dem letzten / weg muss.
tr geht auch nicht, weil auch der dateiname + endung sich ändern werden.

mit sed ginge es vermutlich, aber ich blick da noch nicht so durch.

bitte um hilfe


pate schrieb am 10.08.2007 um 01:45

ich habe jetzt, bei einem eigentlich nicht ganz ernst gemeinten versuch, die lösung gefunden, falls es wen interessiert:

Code:
rardlrev=$(echo $rardl | rev)
rardlrevcut=$(echo $rardlrev | cut -f1 -d"/" --complement)
rardldir=$(echo $rardlrevcut | rev)
kurz gesagt, den ganzen string umdrehen, bis zum ersten delimiter (/) cutten (komplementär davon nehmen) wieder mit rev umdrehen :D
pfusch, aber es geht


that schrieb am 10.08.2007 um 16:10

Ein wenig eleganter wirds, wenn du alles in eine Zeile schreibst...

muh = $(echo $bla | rev | cut ... | rev)


COLOSSUS schrieb am 10.08.2007 um 16:24

Generisch:

Code:
dirname "/this/is/a/dir/and/this/a.rar"
bash:
Code:
myvar="/this/is/a/dir/and/this/a.rar";
echo "${myvar%/*}"


pate schrieb am 10.08.2007 um 21:21

@that
danke, hab ich eh jetzt so verwirklicht, war noch vom herumtesten in x variablen zerlegt.

@colossus

nette sache!
kannst du mir einen hint geben wie man das nennt, bzw wo kann ich nachlesen weshalb das mit dem %/* funktioniert, wieso man da { und nicht ( braucht, kurz, was ist die syntax?
sieht nämlich sehr interessant aus.

sorry bin neu auf dem gebiet und versuche mich gerade an 1001 unnötigen shell einzeilern um mir kleine aufgaben zu erleichtern :)


COLOSSUS schrieb am 10.08.2007 um 22:01

Bisschen was wird hier behandelt:
http://johannes.truschnigg.info/tut/bash-tut.sxhtml

(shameless plug ;))

Ansonsten: `man bash`, Kapitel "Parameter Expansion"


pate schrieb am 10.08.2007 um 22:35

Vielen Dank!
"Parameter Expansion" war das Schlagwort das ich gesucht habe :)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025