Sziasztok,
Van egy sztring ami mindig az utolsó per ("/") jel után szerepel, amit ki szeretnék nyerni. Szenvedek vele már egy ideje, de nem találtam a megoldást. Tud vki segiteni?
Pl.
input --->
/egy/ketto/harom/negy/hosztneve
output --->
hosztneve
Tehát tetszőleges hosszúságú vagy mélységű könyvtárstruktúra végén szerepel egy hosztnév, amiből is csak a hosztnevet szeretném kinyerni. Ez mindig 9 karakter hosszú. Próbáltam:
$ input="/egy/ketto/harom/negy/hosztneve"
$ echo $input | sed -e "s/.........$//"
/egy/ketto/harom/negy/
Ilyenkor azonban a hosztnev eltűnik és marad a többi. Nekem pont az ellenkezője kellene.
Előre is köszi minden segitséget.
qmi
- 1522 megtekintés
Hozzászólások
Lehet szívni sed-el is, de a basename parancs pont erre jó
basename /egy/ketto/harom/negy/hosztneve
kimenete a "hosztneve"
- A hozzászóláshoz be kell jelentkezni
sed 's,^.*/\(.*\)$,\1,'
vagy
sed 's,^.*/,,'
- A hozzászóláshoz be kell jelentkezni
grep -o [^/]*$
--
Debian - The "What?!" starts not!
http://nyizsa.uni.cc
- A hozzászóláshoz be kell jelentkezni
awk -F/ '{print $NF}'
példa:
input="/egy/ketto/harom/negy/hosztneve"
echo $input | awk -F/ '{print $NF}'
- A hozzászóláshoz be kell jelentkezni
Ahh..ez jó , hogy a basename-t igy is lehet használni. Azthittem, hogy csak a fájlrendszeren valójában létező fájloknál megy, de nem:
$ s="/egy/ketto/harom/negy/hosztneve"
$ basename $s
hosztneve
$
A sed, awk, grep példa is nagyon jó. Köszi mindenkinek.
--
qmi - Linux/FreeBSD SysAdm
www.miklos.info
- A hozzászóláshoz be kell jelentkezni
Akkor a teljesebbséág kedvéért még egy, shell-only megoldás (nem regexp: glob).
$ input="/egy/ketto/harom/negy/hosztneve"
$ echo ${input##*/}
hosztneve
- A hozzászóláshoz be kell jelentkezni
Kösz! Eredetileg ezzel próbálkoztam de sehogy nem jött össze.
--
qmi - Linux/FreeBSD SysAdm
www.miklos.info
- A hozzászóláshoz be kell jelentkezni
Valszeg egy #-t használtál, ami a legrövidebb illeszkedést (az első /-t) vágja le, a ## viszont a leghosszabbat.
- A hozzászóláshoz be kell jelentkezni