Sortowanie wed

Potrzebujesz pomocy z C, C++, perl, python, itp.
hasanek
Posty: 31
Rejestracja: 24 maja 2008, 18:54

Sortowanie według aktualnej godziny

Post autor: hasanek »

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.
yantar
Member
Posty: 1225
Rejestracja: 07 czerwca 2007, 21:15
Lokalizacja: Rzeszów

Post autor: yantar »

Na przyklad tak

Kod: Zaznacz cały

sort -n /sciezka_do_pliku | head -n1
To mozna na kilka sposobow, w zaleznosci do czego to ma byc.
Poczytaj

Kod: Zaznacz cały

man textutils
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 ;]
hasanek
Posty: 31
Rejestracja: 24 maja 2008, 18:54

Post autor: hasanek »

yantar pisze:Na przyklad tak

Kod: Zaznacz cały

sort -n /sciezka_do_pliku | head -n1
To mozna na kilka sposobow, w zaleznosci do czego to ma byc.
Poczytaj

Kod: Zaznacz cały

man textutils
I pewnie jeszcze innymi narzedziami to da sie zrobic]

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
Pozdrawiam
ODPOWIEDZ