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

[gelöst] funktion mit sed

stka

Guru
Hallo,
ich habe hier ein shellskript das mit dem sed Zahlen aus einer Variablen auslesen soll, aber irgendwie klappt das nicht. Der Inhalt der Variablen wir in diese Form dargestellt:
(-501,-493)
hier jetzt die Funktion die jetzt die beiden Werte auslesen soll.
Code:
function init_HDAPS() {
    # test for device
    if [ ! -f ${HDAPS_DEVICE} ]; then
        return 1
    fi

    # get current position
    HDAPS=`cat ${HDAPS_DEVICE}`
    HDAPS_X=`echo ${HDAPS} |sed 's/^(\([0-9]\+\),\([0-9]\+\))$/\1/'`
    HDAPS_Y=`echo ${HDAPS} |sed 's/^(\([0-9]\+\),\([0-9]\+\))$/\2/'`
    # set old values to avoid false alarm on first check_HDAPS()
    HDAPS_X_OLD=${HDAPS_X}
    HDAPS_Y_OLD=${HDAPS_Y}

    return 0
}
Der Wert in den Klammern steht in der Variablen HDAPS. Nur scheint das sed kommando falsch zu sein, als Ergebnis sollte eine Variable HDAPS_X mit dem Wert 501 und eine Variabel HDAPS_Y mit dem Wert 493 raus kommen.
 
OP
S

stka

Guru
Danke die Antwort. Dann werde ich das mal ohne sed machen.
Ich habe es gerade mal auf der Kommandozeile probiert, das Ergebnis sieht so aus:

stefan@stefan~$> XY_WERT="(-501,-600)"
stefan@stefan~$> Y="${XY_WERT#*,}"
stefan@stefan~$> echo $Y
-600)
stefan@stefan~$> X="${XY_WERT%,*}"
stefan@stefan~$> echo $X
(-501
Irgendwie noch nicht das was ich brauche. Ich will ja nur die Zahlenwerte.

@notoxp Die Minussens brauche ich nicht ;-)
 

regexer

Advanced Hacker
stka schrieb:
@notoxp Die Minussens brauche ich nicht ;-)
Doch! Das fehlt nämlich in deinem sed, und dadruch trifft der Suche-Ausdruck nicht auf deinen String zu.

Irgendwie noch nicht das was ich brauche. Ich will ja nur die Zahlenwerte.
Du kannst natürlich Klammern und Minusse mit der bash oder mit tr oder mit sed :wink: wieder rausschmeißen.

Beispiel mittels Parameter extension der bash:
Code:
XY_WERT="(-501,-600)"
Y="${XY_WERT#*,}"
Y="${Y/-/}"
Y="${Y/)/}"
 
OP
S

stka

Guru
Wenn ich die "" bei der Übergabe das Wertes an die Variable weg lasse, klappt es. Das Minus ist kein Problem, da bei der nachfolgenden Berechnung das Minus verschwindet.
 

regexer

Advanced Hacker
stka schrieb:
Wenn ich die "" bei der Übergabe das Wertes an die Variable weg lasse, klappt es.
Dann werden die Klammern aber schon von der Shell evaluiert und landen erst gar nicht in der Variablen.
Code:
prompt> XY=(blalaber)
prompt> echo $XY
blalaber

Das Minus ist kein Problem, da bei der nachfolgenden Berechnung das Minus verschwindet.
Ich meinte ja auch, dass in deinem allerersten Beitrag das Minus das eigentliche Problem war...
 
Oben