uhrzeit aus file auslesen und mit akt. zeit vergleichen

E

epios_newbie

Grünschnabel
Hihallo,
versuche nun seit 2 Tagen ein Script fertigzustellen und komm nicht auf den Trichter!

möchte aus einem File die Übergebene Zeit auslesen und mit der Aktuellen Systemzeit
vergleichen.
in dem file wakeup steht drin: (bin zu dusselig zu kopierne tippe deshalb)

1. zeile frei
2. zeile sinnloser quatsch
3. zeile steht drin:
sudo /usr/sbin/nvram-wakeup -A -C /etc/nvram-wakeup.conf -s `date -d "$radio 09:30:00" +%s'
(die 09:30:00 ist die übergebene einschaltzeit) die zeile ist immer exakt gleich lang

die zeit 09:30:00 will ich als variable schaltzeit in meiner test.sh "einlesen", die doppelpunkte entfernen um
dann das (als zahlenwert ) mit der
uhrzeit=`date +%H%M%S`
in einer
if ["$uhrzeit" -gt "$schaltzeit"]
then ....
fi
auszuwerten.

das problem ist , ich kann zwar die 3. zeile mittels
schaltzeit=$(sed -n "3 p" wakeup)
einlesen
ich scheitere jedoch am extrahieren der 09:30:00 !!!
expr substr geht nicht , es kommt immer Error , denke mal wegen der leerzeichen und " und ` in der zeile ??? ?

1. idee: wie kann ich diese zeile dennoch extrahieren ?
2. idee: kann ich mittels sed gleich nur die 09:30:00 oder besser gar 093000
erhalten ..?

bin inzwischen wirklich ratlos ...
 
epios_newbie schrieb:
Hihallo,
versuche nun seit 2 Tagen ein Script fertigzustellen und komm nicht auf den Trichter!

möchte aus einem File die Übergebene Zeit auslesen und mit der Aktuellen Systemzeit
vergleichen.
in dem file wakeup steht drin: (bin zu dusselig zu kopierne tippe deshalb)

1. zeile frei
2. zeile sinnloser quatsch
3. zeile steht drin:
sudo /usr/sbin/nvram-wakeup -A -C /etc/nvram-wakeup.conf -s `date -d "$radio 09:30:00" +%s'
(die 09:30:00 ist die übergebene einschaltzeit) die zeile ist immer exakt gleich lang

die zeit 09:30:00 will ich als variable schaltzeit in meiner test.sh "einlesen", die doppelpunkte entfernen um
dann das (als zahlenwert ) mit der
uhrzeit=`date +%H%M%S`
in einer
if ["$uhrzeit" -gt "$schaltzeit"]
then ....
fi
auszuwerten.

das problem ist , ich kann zwar die 3. zeile mittels
schaltzeit=$(sed -n "3 p" wakeup)
einlesen
ich scheitere jedoch am extrahieren der 09:30:00 !!!
expr substr geht nicht , es kommt immer Error , denke mal wegen der leerzeichen und " und ` in der zeile ??? ?

1. idee: wie kann ich diese zeile dennoch extrahieren ?
2. idee: kann ich mittels sed gleich nur die 09:30:00 oder besser gar 093000
erhalten ..?

bin inzwischen wirklich ratlos ...

Hallo
aus der Zeile
sudo /usr/sbin/nvram-wakeup -A -C /etc/nvram-wakeup.conf -s `date -d "$radio 09:30:00" +%s'
nur 093000 zu bekommen sollte damit mit allen sed-Versionen

gehen:
Bitte immer dazu schreiben welche du nutzt, da es so viele verschiedene gibt.
Code:
echo "\'sudo /usr/sbin/nvram-wakeup -A -C /etc/nvram-wakeup.conf -s \`date -d \"$radio 09:30:00\" +%s\`\'"|sed -e 's/[-'"'"'  $ :"\.`%+/[:alpha:]]//g'
HTH
Gruß Wolfgang
 
Zuletzt bearbeitet:
Version und noch ein Fehler drin?

Hallo,
erst mal danke für die super schnelle Antwort.

ich verwende GNU sed version 4.1.4

dass die 09:30:00 je nach übermitteltem Script immer wechselt hast du berücksichtigt? ( wenn ich eine sendung zu einer andereen zeit aufzeichnen will erscheint da z.b. 20:30:00 oder sonst eine zeit ...)


also ich habe das abgetippt in mein shell script test.sh
sowohl als
echo ...... ( exakt dein ausdruck)
als auch

a= echo......
echo $a

als Fehlermeldung kommt ( das script hat momentan 10 zeilen!)
test: line 11: syntax error: unexpected end of file

wieso muss ich sed nicht "sagen" dass er in zeile 3 nachsehen muss ?
und ...ich muss doch sed "sagen" dass er im file /user/player/wakup nachgucken soll?
 
Hallo
Natürlich musst du deinem sed sagen, in welcher Zeile gesucht werden soll.
Ich habe dir lediglich den REGEXP für deinen Fall gepostet.
Aber wenn z.B. in test1 steht:
$cat test1
zeile1
Zeile2
'sudo /usr/sbin/nvram-wakeup -A -C /etc/nvram-wakeup.conf -s `date -d " 20:30:00" +%s`'

Dann bringt mir das folgende genau was du wünscht:
Hier gehe ich mal auch auf die Zeile 3 ein:
Code:
sed -e '3!d{s/[-'"'"'  $ :"\.`%+/[:alpha:]]//g}' test1


$ sed -e '3!d;{s/[-'"'"' $ :"\.`%+/[:alpha:]]//g}' test1
203000


Ich gehe davon aus, dass die Befehlszeile mit sudo... in ' steht!

Gruß Wolfgang

PS die Kurzform (geht aber nicht mit allen sed-Versionen):

sed -e '3!d;{s/[^[:digit:]]//g}' test1

Funktioniert hier, weil keine weiteren Ziffern in der Zeile vorkommen.
 
Zuletzt bearbeitet:
es klappt - super -

es klappt ... es klappt wirklich !!!
die erste zeile zaubert mir noch '093000'
die zweite jedoch , die kurzform .. das "is es" !
result 093000
perfekt. ich hätte das ohne deine hilfe nicht hinbekommen.
1000 dank.
der rest war ein "kinderspiel"
funktion läuft schon.

wie wäre denn der befehl bei gewünschtem result
09:30:00
gewesen ??
dein code :
sed -e '3!d{s/[-'"'"' $ :"\.`%+/[:alpha:]]//g}' test1
result '093000'
dein code :
???
result 09:30:00
(ich wills ja auch "kapieren" ;-)
grüße stefan
 

Ähnliche Themen

Festplatte friert ein nach suspend/resume

Linuxpartition zerschossen

Zurück
Oben