• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Bash] Teil aus Dateinamen mit CUT

gnatbite

Newbie
Hallo Leute, ich schreibe gerade an einem kleinen Bashskript, dass NRPE automatisch herunterladen und installieren soll. Jetzt bin ich auf ein kleines Problem gestoßen.
Damit das Install-Skript nicht zu statisch ist, möchte ich auch auf Versionänderungen von NRPE eingehen. Nun habe ich folgendes Problem.

Ich möchte aus einem Dateinamen: z.B. nrpe-2.4.tar.gz die Versionnummer cutten. (2.4)
Wie bekomme ich das mit cut hin?

Würde mich über Hilfe freuen.
 

nbkr

Guru
Quick and Dirty:

Einfach zweimal cut anwenden. Einmal mit - als delimiter einmal . als delimiter. Könnten evtl. auch mit -c gehen. Müsstest Du mal testen, hab gerade kein Linux da um es auszuprobieren.

Gibt aber bestimmt auch noch schönere Lösungen.
 
OP
G

gnatbite

Newbie
Jo, danke Dir. Habe es soeben selbst hinbekommen. Hier meine Lösung:

Code:
ls /verzeichnisse/nrpe-*.tar* | cut -c 29-31`

So funktioniert es zwar, wenn aber eine 3stellige Versionsnummer auftaucht, würde es Probleme geben. Ich lasse das aber erstmal so.
 

TeXpert

Guru
cut mit festen Zeichen ist immer gefährlich... daher eine kleine (IMHO bessere) Alternative:

Dateinamen von Pfaden und Suffix bereinigen:
Code:
$ NAME=$(basename "/foo/bar/nrpe-2.4.tar.gz" .tar.gz )
$ echo $NAME
nrpe-2.4

jetzt alles bis auf die Versionsnummer entfernen: (alles vor -)
Code:
$ echo ${NAME##*-}
2.4
 
OP
G

gnatbite

Newbie
Danke Dir, habe es jetzt mit sed gelöst.

Hier meine Lösung:

Code:
ls -1 /usr/local/src/naginst/nrpe-*.tar.gz | head -1  | cut -d '-' -f2 | sed -e "s/.tar.gz//g"
 

TeXpert

Guru
*autsch*

Du startest für diese Aufgabe 3 extra Prozesse...
wenn die Dateinamen immer gleich aussehen (/PFAD/nrpw-VERSION.tar.gz) kann das alles
mit einer Variablen und einer Schleife

Code:
ls -1 /foo/bar/*... | while read file 
do
   DOSOMETHING
done

in der Shell ohne extra Prozesse gemacht werden...

Beipspiel:
Code:
file="/usr/local/src/nag-inst/nrpe-1.2.3.4.tar.gz"

DOSOMETHING ist also dann ein:

schneide alles bis hinter "*nrpe-" weg und dann Suffix entfernen:

Code:
file=${file##*-}
file=${file%.*.*}

jetzt ist nur noch die Versionsnummer übrig, das ist bei vielen Files deutlich effizienter.
 
Oben