Hallo mitteinander,
an diesem kleinen Problem Sitze ich nun mehr als 3 Tage.
Hatte vor selbst auf eine Lösung zu kommen, bin aber nun zu dem Schluss gekommen, das ich selbst auf keine komme.
Ich habe es mit sed, grep, etc. durch probiert, aber bisher nichts passendes dabei.
Ich hab eine Variable, diese so aussieht, kann aber variieren.
Es gibt aber immer nur einen Pfad.
Aus diesem möchte ich nun die ersten beide Teile vom Pfad extrahieren.
Bsp.: test=xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin
Also: /pfad1/pfad2/
Diese möchte ich per echo ausgeben.
Also echo $test | sed/grep etc...
Eigentlich müsste ich eigentlich nur das erste / finden und noch bis zu zwei weitere markieren.
Ich habe sicherlich über 50 Kombinationen probiert, aber bis auf "/pfad1/pfad2/pfad3/pfad4/test" bin ich nicht weiter gekommen.
Vielen Dank und viele Grüße
Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
(gelöst) Pfad aus string extrahieren
Moderator: Moderatoren
(gelöst) Pfad aus string extrahieren
Zuletzt geändert von droda am 4. Jun 2018, 23:44, insgesamt 1-mal geändert.
Werbung:
Re: Pfad aus string extrahieren
Das Stichwort ist hier reguläre Ausdrücke (regular Expression). Diese kannst du sowohl bei sed als auch grep benutzen um genau den Teil aus dem String zu extrahieren den du benötigst 

Re: Pfad aus string extrahieren
Danke,
mit regex kenne ich mich schon halbwegs aus.
Trotzdem bin ich nicht weiter gekommen... Bis jetzt.
Wirklich gerade die Lösung für mich gefunden...
| grep -o -E "\/[[:alnum:]]+\/[[:alnum:]]+\/"
Ist beliebig erweiterbar.
mit regex kenne ich mich schon halbwegs aus.
Trotzdem bin ich nicht weiter gekommen... Bis jetzt.
Wirklich gerade die Lösung für mich gefunden...
| grep -o -E "\/[[:alnum:]]+\/[[:alnum:]]+\/"
Ist beliebig erweiterbar.
-
- Hacker
- Beiträge: 349
- Registriert: 23. Jun 2008, 20:51
Re: (gelöst) Pfad aus string extrahieren
Ich habe das nicht ausprobiert, aber das kannst du selbst nachholen
# VAR="xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin"
# echo $(grep -P -o "\/\w+\/\w+\/" <<< "$VAR")
Gruß
Gräfin Klara
# VAR="xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin"
# echo $(grep -P -o "\/\w+\/\w+\/" <<< "$VAR")
Gruß
Gräfin Klara
Re: (gelöst) Pfad aus string extrahieren
Code: Alles auswählen
#!/bin/bash
test=xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin
echo $test | awk -F "/" '{printf "/%s/%s/\n", $2, $3}'
Perl tut's auch, robi findet aber, der Interpreter sei dafür übermäßig groß. awk ist sicher kleiner.
Re: (gelöst) Pfad aus string extrahieren
cut ist da noch praktischer und lightweight

Code: Alles auswählen
t="xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin"; cut -f 2-3 -d / <<< "$t"
Code: Alles auswählen
t="xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin"; sed -r 's/[^:]+:((\/[^/]+){2})(.*)/\1/' <<< "$t"
Code: Alles auswählen
t="xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin"; IFS='/' read x a b y <<< "$t"; echo "/$a/$b"
Code: Alles auswählen
t="xxxxx:/pfad1/pfad2/pfad3/pfad4/test.bin"; IFS=/ eval set -- \$t; echo "/$2/$3"