Witam.
Mam plik w którym są wypisane różne godziny, w wierszach np.:
06:34
07.25
14:38
23:12
01:34
Jak wyłuskać z tego godzinę, która będzie bezpośrednio mniejsza od aktualnej.
Np.: załóżmy, że jest teraz godzina. 15:30
więc w wyniku powinno zwrócić 14:38
Czekam na propozycje i z góry dziękuję za pomoc.
Pozdrawiam.
Sortowanie wed
Na przyklad tak
To mozna na kilka sposobow, w zaleznosci do czego to ma byc.
Poczytaj
I pewnie jeszcze innymi narzedziami to da sie zrobic;]
ps.W sumie nie do konca zajarzylem, ze to ma uwzgledniac od aktualnej godziny. za duzo swietowania przy browarku. Ale ciesze sie, ze pomoglem ;]
Kod: Zaznacz cały
sort -n /sciezka_do_pliku | head -n1
Poczytaj
Kod: Zaznacz cały
man textutils
ps.W sumie nie do konca zajarzylem, ze to ma uwzgledniac od aktualnej godziny. za duzo swietowania przy browarku. Ale ciesze sie, ze pomoglem ;]
yantar pisze:Na przyklad takTo mozna na kilka sposobow, w zaleznosci do czego to ma byc.Kod: Zaznacz cały
sort -n /sciezka_do_pliku | head -n1
PoczytajI pewnie jeszcze innymi narzedziami to da sie zrobic]Kod: Zaznacz cały
man textutils
Wielkie dzięki. Podsunąłeś mi rozwiązanie. Też próbowałem użyć sorta ale jakoś prędzej nie wpadłem że to może być takie proste.
Może wyjaśnię:
W pliku tekstowym, który przeszukuję zawarty jest program telewizyjny jednej stacji. Chciałem wyłuskać z tego dalszą część programu, od aktualnej godziny.
Dzięki Tobie wreszcie wpadłem na pomysł jak to zrobić.
Hmm.... może wkleję kodzik dla potomnych ;-) i oczywiście liczę na uwagi co można by usprawnić.
Kod: Zaznacz cały
plik=~tomek/etc/programtv/baza/TVP_Polonia-08062008.html
sort $plik >~/tmp/sort.tmp
dl=$(cat $plik|wc -l) #ilość lini pliku
for i in `cat ~/tmp/sort.tmp | awk '{print $1}'`
do
if [ "$i" \> "$czas" ]; then
break
fi
done
for j in `cat $plik |awk '{print $1}'`
do
if [ "$j" == "$i" ]; then
break
fi
x=$[x+1]
done
tail -$[dl-x+2] $plik >~/tmp/programtv.tmp #te "+2" jest po to żeby uwzględnić aktualnie trwający program