Portál AbcLinuxu, 17. července 2025 13:36


Dotaz: Řazení řádků podle datumu

25.1.2008 11:56 jsk | skóre: 10
Řazení řádků podle datumu
Přečteno: 363×
Odpovědět | Admin
Dobrý den, potřeboval bych soubory typu, viz. ukázka, seřadit podle data a vůbec nemůžu přijít na řešení. Díky Pepa

ukázka: <…><--->BARDIYA Monday, January 21, 2008 (IRIN) - The <…><--->JERUSALEM Monday, January 21, 2 <…><--->AMMAN Sunday, January 20, 2008 (IRIN) - A two <…><--->SANAA Sunday, January 20, 2008 (IRIN) - Hundr <…><--->BAGHDAD Sunday, January 20, 2008 (IRIN) - Ira <…><--->MAPUTO Monday, January 14, 2008 (IRIN) - Wate <…><--->DAKAR Tuesday, January 22, 2008 (IRIN) - An a <…><--->JERUSALEM Tuesday, January 22, 2008 (IRIN) - <…><--->KABUL Tuesday, January 22, 2008 (IRIN) - The <…><--->BARDIYA Monday, January 21, 2008 (IRIN) - The <…><--->JERUSALEM Monday, January 21, 2 <…><--->AMMAN Sunday, January 20, 2008 (IRIN) - A two

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.1.2008 12:17 ams
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zalezi na tom, v jakem programovacim jazyce to chcete mit. Nejdulezitejsi je, jestli uz ma standardni funkci pro prevod data z retezce na timestamp. PHP/Python to maji nativne, Perl vyzaduje modul Date::Manip nebo podobny. Pro ucely serazeni ale staci jednoduchy algoritmus, ktery lze rychle naprogramovat v libovolnem jazyce. Takze otazka - v cem to chcete mit?
25.1.2008 12:24 jsk | skóre: 10
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Ideální by to bylo asi v bash-i, případně Python-u. Díky Pepa
25.1.2008 13:53 ams
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Trochu me prekvapuje radek JERUSALEM Monday, January 21, 2. Opravdu potrebujete rok 2? Doufam, ze ne. Navic, 21.ledna roku 2 n.l. byla sobota :). Jinak je tu reseni v bashi:
while read radek ; do
        datum="${radek#*, }"
        datum="${datum%% (*}"
        mesic="${datum%% *}"
        den="${datum#* }"
        den="${den%,*}"
        rok="${datum##* }"
        if   [[ "$mesic" == "January"   ]] ; then mesic="01" ;
        elif [[ "$mesic" == "February"  ]] ; then mesic="02" ;
        elif [[ "$mesic" == "March"     ]] ; then mesic="03" ;
        elif [[ "$mesic" == "April"     ]] ; then mesic="04" ;
        elif [[ "$mesic" == "May"       ]] ; then mesic="05" ;
        elif [[ "$mesic" == "June"      ]] ; then mesic="06" ;
        elif [[ "$mesic" == "July"      ]] ; then mesic="07" ;
        elif [[ "$mesic" == "August"    ]] ; then mesic="08" ;
        elif [[ "$mesic" == "September" ]] ; then mesic="09" ;
        elif [[ "$mesic" == "October"   ]] ; then mesic="10" ;
        elif [[ "$mesic" == "November"  ]] ; then mesic="11" ;
        elif [[ "$mesic" == "December"  ]] ; then mesic="12" ;
        else echo "Nemuzu rozpoznat mesic $mesic v datumu $datum" >&2; mesic="00"
        fi
        if [[ "$den" -lt 10 ]] ; then
                [[ ${#den} -lt 2 ]] && den="0$den"
        fi
        echo "$rok$mesic$den:$radek"
done | sort | cut -f2 -d:
25.1.2008 13:55 ams
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Oops, hned jsem tu vsiml chyby. Za okamzik to opravim ;)
25.1.2008 14:01 ams
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Ach jo, zase chybicka. Doufam, ze toto uz je definitivni reseni :)
while read radek ; do
        datum="${radek#*, }"
        datum="${datum%% (*}"
        mesic="${datum%% *}"
        den="${datum#* }"
        den="${den%,*}"
        rok="${datum##* }"
        if   [[ "$mesic" == "January"   ]] ; then mesic="01" ;
        elif [[ "$mesic" == "February"  ]] ; then mesic="02" ;
        elif [[ "$mesic" == "March"     ]] ; then mesic="03" ;
        elif [[ "$mesic" == "April"     ]] ; then mesic="04" ;
        elif [[ "$mesic" == "May"       ]] ; then mesic="05" ;
        elif [[ "$mesic" == "June"      ]] ; then mesic="06" ;
        elif [[ "$mesic" == "July"      ]] ; then mesic="07" ;
        elif [[ "$mesic" == "August"    ]] ; then mesic="08" ;
        elif [[ "$mesic" == "September" ]] ; then mesic="09" ;
        elif [[ "$mesic" == "October"   ]] ; then mesic="10" ;
        elif [[ "$mesic" == "November"  ]] ; then mesic="11" ;
        elif [[ "$mesic" == "December"  ]] ; then mesic="12" ;
        else echo "Nemuzu rozpoznat mesic $mesic v datumu $datum" >&2; mesic="00"
        fi
        [[ ${#den} -lt 2 ]] && den="0$den"
        echo "$rok$mesic$den:$radek"
done | sort | cut -f2- -d:
25.1.2008 16:30 jsk | skóre: 10
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Jistě, je to rok 2008, kopíroval jsem to z PSPad-u blokem. Díky jsk
25.1.2008 13:58 ams
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
while read radek ; do
        datum="${radek#*, }"
        datum="${datum%% (*}"
        mesic="${datum%% *}"
        den="${datum#* }"
        den="${den%,*}"
        rok="${datum##* }"
        if   [[ "$mesic" == "January"   ]] ; then mesic="01" ;
        elif [[ "$mesic" == "February"  ]] ; then mesic="02" ;
        elif [[ "$mesic" == "March"     ]] ; then mesic="03" ;
        elif [[ "$mesic" == "April"     ]] ; then mesic="04" ;
        elif [[ "$mesic" == "May"       ]] ; then mesic="05" ;
        elif [[ "$mesic" == "June"      ]] ; then mesic="06" ;
        elif [[ "$mesic" == "July"      ]] ; then mesic="07" ;
        elif [[ "$mesic" == "August"    ]] ; then mesic="08" ;
        elif [[ "$mesic" == "September" ]] ; then mesic="09" ;
        elif [[ "$mesic" == "October"   ]] ; then mesic="10" ;
        elif [[ "$mesic" == "November"  ]] ; then mesic="11" ; 
        elif [[ "$mesic" == "December"  ]] ; then mesic="12" ;
        else echo "Nemuzu rozpoznat mesic $mesic v datumu $datum" >&2; mesic="00"
        fi
        [[ ${#den} -lt 2 ]] && den="0$den"
        echo "$rok$mesic$den:$radek"
done | sort | cut -f2 -d:
Martin Stiborský avatar 25.1.2008 12:54 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Já jsem hlavně zvědavý na ten algoritmus, něco takového jsem nedávno řešil, tak by mě zajímalo i jiné řešení, hlavně pro porovnání s tou mou prasárnou :)
Kvík ..
25.1.2008 13:13 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Odpovědět | | Sbalit | Link | Blokovat | Admin
... ukazka:
<…><--->BARDIYA Monday, January 21, 2008 (IRIN) - The
<…><--->JERUSALEM Monday, January 21, 2
<…><--->AMMAN Sunday, January 20, 2008 (IRIN) - A two
<…><--->SANAA Sunday, January 20, 2008 (IRIN) - Hundr
<…><--->BAGHDAD Sunday, January 20, 2008 (IRIN) - Ira
<…><--->MAPUTO Monday, January 14, 2008 (IRIN) - Wate
<…><--->DAKAR Tuesday, January 22, 2008 (IRIN) - An a
<…><--->JERUSALEM Tuesday, January 22, 2008 (IRIN) - 
<…><--->KABUL Tuesday, January 22, 2008 (IRIN) - The 
<…><--->BARDIYA Monday, January 21, 2008 (IRIN) - The
<…><--->JERUSALEM Monday, January 21, 2
<…><--->AMMAN Sunday, January 20, 2008 (IRIN) - A two
To len aby pripadneho ochotneho riesitela neodradila necitatelnost. :-)
25.1.2008 16:28 jsk | skóre: 10
Rozbalit Rozbalit vše Re: Řazení řádků podle datumu
Díky, také jsem na to koukal jak jsem to zoslil. Pepa

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.