Hjälp mig lära mig awk
TLDR: Jag har en sträng med ett klockslag, ex. 14:48, i en txt-fil som jag vill dra bort 2 timmar från. Antar att jag kan få till det med awk + lite annat, men behöver hjälp att komma igång. Eller är jag helt ute och bör gå via date-operations?
Wall of text:
Jag har petat lite smått med bash och några script för att pyssla om mina utelampor hemma.
Nu har jag äntligen lite tid att förfina det något och känner att jag behöver hjälp att komma vidare.
Jag har ett script som hämtar tid för soluppgång och solnedgång och returnerar dessa som strängar.
pi@386pi /usr/local/bin/scripts $ more writetimes.sh
#!/bin/bash
sunrise=$(curl -s http://weather.yahooapis.com/forecastrss?w=906057 | grep astro
nomy | awk -F\" '{print $2}'|{ date -f - +%R; })
sunset=$(curl -s http://weather.yahooapis.com/forecastrss?w=906057 | grep astron
omy | awk -F\" '{print $4}'|{ date -f - +%R; })
echo $sunrise > /home/pi/sunrise.txt
echo $sunset > /home/pi/sunset.txt
exit
från http://forum.pimatic.org/topic/108/sunrise-and-sunset-device-...
Det scriptet körs just efter midnatt varje natt och sparar värdet i en textfil.
pi@386pi ~ $ more sunset.txt
14:48
Sen har jag ett cronjobb som läser upp filerna och schemalägger att tända och släcka lampor med "at"-kommandot som en vänlig själ här på forumet rekommenderade.
pi@386pi /usr/local/bin/scripts $ more onoff.sh
#!/bin/bash
# Get hours and minutes for sunrise and sunset
file="/home/pi/sunset.txt"
sunset=$(cat "$file")
file="/home/pi/sunrise.txt"
sunrise=$(cat "$file")
#echo $sunrise
#echo $sunset
#at $sunrise today /usr/local/bin/tdtool -f 1
#at $sunset today /usr/local/bin/tdtool -n 1
echo '/usr/local/bin/tdtool -f 1' | at $sunrise
echo '/usr/local/bin/tdtool -n 1' | at $sunset
echo '/usr/local/bin/tdtool -f 2' | at $sunrise
echo '/usr/local/bin/tdtool -n 2' | at $sunset
exit
Som ni kanske ser så är det två set lampor som tänds vid solnedgång och släcks vid soluppgång. Jag skulle vilja ge dem lite offset, dvs göra till exempel tid från textfil + 2 timmar och tid från textfil -2 timmar, men jag får inte till det. Kan man konvertera strängen till HH:mm och göra vanliga date-operations på den eller bör man gå via awk eller något annat?
Tacksam för all hjälp.
/J