abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:00 | IT novinky

    Společnost Pebble představila (YouTube) chytré hodinky Pebble Round 2. S kulatým e-paper displejem, s open source PebbleOS a vydrží baterie přibližně dva týdny. Předobjednat je lze za 199 dolarů s plánovaným dodáním v květnu.

    Ladislav Hagara | Komentářů: 1
    včera 14:22 | Humor

    Na novoroční inauguraci starosty New Yorku Zohrana Mamdaniho bylo zakázáno si s sebou přinést Raspberry Pi anebo Flipper Zero. Raspberry Pi i Flipper Zero jsou explicitně uvedeny v seznamu zakázaných věcí jak na na veřejné pozvánce, tak i na oficiálních stránkách města.

    NUKE GAZA! 🎆 | Komentářů: 18
    včera 11:33 | Nová verze

    OpenTTD (Wikipedie), tj. open source klon počítačové hry Transport Tycoon Deluxe, byl vydán v nové stabilní verzi 15.0. Přehled novinek v seznamu změn a také na YouTube. OpenTTD lze instalovat také ze Steamu.

    Ladislav Hagara | Komentářů: 2
    včera 11:11 | Nová verze

    Správce oken IceWM byl vydán ve verzi 4.0.0, která např. vylepšuje navigaci v přepínání velkého množství otevřených oken.

    |🇵🇸 | Komentářů: 4
    včera 01:33 | Zajímavý projekt

    Od 1. ledna 2026 jsou všechny publikace ACM (Association for Computing Machinery) a související materiály přístupné v její digitální knihovně. V rámci této změny je nyní digitální knihovna ACM nabízena ve dvou verzích: v základní verzi zdarma, která poskytuje otevřený přístup ke všem publikovaným výzkumům ACM, a v prémiové zpoplatněné verzi, která nabízí další služby a nástroje 'určené pro hlubší analýzu, objevování a organizační využití'.

    NUKE GAZA! 🎆 | Komentářů: 5
    1.1. 16:44 | IT novinky

    S koncem roku 2025 skončila standardní podpora operačního systému HP-UX (Hewlett Packard Unix).

    Ladislav Hagara | Komentářů: 10
    1.1. 14:33 | Nová verze

    K 1. lednu 2026 končí 70leté omezení majetkových autorských práv děl autorů zesnulých v roce 1955, viz 2026 in public domain. V americkém prostředí vstupují do public domain díla z roku 1930, viz Public Domain Day.

    |🇵🇸 | Komentářů: 3
    31.12. 15:00 | Nová verze

    Všem vše nejlepší do nového roku 2026.

    Ladislav Hagara | Komentářů: 12
    31.12. 13:33 | Zajímavý software

    Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.60. Vyzkoušet lze online demo.

    Ladislav Hagara | Komentářů: 0
    31.12. 12:11 | Zajímavý článek

    Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().

    Ladislav Hagara | Komentářů: 6
    Které desktopové prostředí na Linuxu používáte?
     (0%)
     (5%)
     (0%)
     (17%)
     (33%)
     (12%)
     (5%)
     (5%)
     (12%)
     (33%)
    Celkem 66 hlasů
     Komentářů: 1, poslední včera 06:15
    Rozcestník

    Dotaz: Parsovani (Bash)

    31.5.2011 09:48 JK
    Parsovani (Bash)
    Přečteno: 796×
    Příloha:
    Dobry den,

    Mam v pc odkaz www stranky( viz. priloha ), ktera se aktualizuje kazdou hodinu. Je to odkaz na predpoved pocasi a potreboval bych z toho jenom vyriznout. DEN A TEPLOTU. Ze zdrojoveho kodu.

    Dekuju moc

    Odpovědi

    31.5.2011 12:49 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    Z jakeho duvodu to ma byt v shellu? Bude to priserve pomale a spatne se s tim bude pracovat. Radeji bych volil nejaky vyssi jazyk - Perl, Python, ...
    31.5.2011 13:03 Fešák Hubert
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    Jinak to cvicici neuzna:)
    31.5.2011 14:29 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    Takze domaci ukol :-) Muzes ukazat co mas hotove na cem se da stavet, nebo kde je problem?
    31.5.2011 18:47 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    man wget man bash man sed
    INFILE="http://adresa/dokument.html"
    
    wget -O - $INFILE | (
        # nejake promenne jenz mozna budeme potrebovat
        PROMENNA=
        ...
        
        while read LINE; do
            # budeme hledat pozadovana data a na zaklade jejich vyskytu neco podnikneme
            echo $LINE | grep -q 'co hledame'
            if [ $? -eq 0 ]; then
                # nalezeno - neco udelame
                ...
            else
                # nenalezeno - delej neco jineho
                ...
            fi
            ...
            
            # popripade si i neco updavime a zapamatujeme
            PROMENNA=`echo $LINE | sed -e 's/vzor/substituce/'`
            ...
            
            # a mozna i neco vypiseme
            printf "vystup"
        done
        )
    
    1.6.2011 18:45 ph0enix | skóre: 18 | Praha
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    Nez shell, to uz bych to radeji napsal v awk. Ikdyz nejelegantnejsi je, diky velmi dobre podpore regularnich vyrazu, reseni v PERLu prezentavane jiz v reakcich na tvuj predchozi dotaz.

    Tady mas bastl v shellu. Diky zpracovani po radcich to bude neskutecne poommmaaaallllleeeeee. Dej si alepon praci s tim pochopit co ktera cast dela nez to budes chtit prezentovat jako svuj vytvor :-(
    #!/usr/bin/bash
    #
    
    INFILE="http://www.abclinuxu.cz/data/prilohy/9/9/175399-pocasi-1837466145685031135.html"
    
    wget -O - $INFILE | (
        INDAY=0
    
        while read LINE; do
            if [ $INDAY -eq 1 ]; then
                if [ $PART -eq 0 ]; then
                    echo $LINE | grep -q 'div class="cLeft"'
                    if [ $? -eq 0 ]; then
                        PART=1
                    else
                        DAY=`echo $LINE | sed -e 's/.*<h4>\(.*\)<\/h4>.*/\1/'`
                    fi
                else
                    if [ $PART -eq 1 ]; then
                        echo $LINE | grep -q 'div class="cRight"'
                        if [ $? -eq 0 ]; then
                            PART=2
                        else
                            echo $LINE | grep -q ' title="'
                            if [ $? -eq 0 ]; then
                                DOP_TYP=`echo $LINE | sed -e 's/.* title="\(.*\)" .*/\1/'`
                            else
                                echo $LINE | grep -q '<p>.*<\/p>'
                                if [ $? -eq 0 ]; then
                                    DOP_TEMP=`echo $LINE | sed -e 's/.*<p>\(.*\)<\/p>.*/\1/'`
                                else
                                    echo $LINE | grep -q '>.*<\/a><'
                                    if [ $? -eq 0 ]; then
                                        DOP_LABEL=`echo $LINE | sed -e 's/.*>\(.*\)<\/a><br.*/\1/'`
                                    fi
                                fi
                            fi
                        fi
                    else
                        echo $LINE | grep -q '<\/div>'
                        if [ $? -eq 0 ]; then
                            printf "[$DAY]\n"
                            printf "\t$DOP_LABEL - $DOP_TYP - $DOP_TEMP\n"
                            printf "\t$ODP_LABEL - $ODP_TYP - $ODP_TEMP\n"
                            INDAY=0
                            PART=0
                            DAY=
                            DOP_LABEL=
                            DOP_TYP=
                            DOP_TEMP=
                            ODP_LABEL=
                            ODP_TYP=
                            ODP_TEMP=
                        else
                            echo $LINE | grep -q ' title="'
                            if [ $? -eq 0 ]; then
                                ODP_TYP=`echo $LINE | sed -e 's/.* title="\(.*\)" .*/\1/'`
                            else
                                echo $LINE | grep -q '<p>.*<\/p>'
                                if [ $? -eq 0 ]; then
                                    ODP_TEMP=`echo $LINE | sed -e 's/.*<p>\(.*\)<\/p>.*/\1/'`
                                else
                                    echo $LINE | grep -q '>.*<\/a><'
                                    if [ $? -eq 0 ]; then
                                        ODP_LABEL=`echo $LINE | sed -e 's/.*>\(.*\)<\/a><br.*/\1/'`
                                    fi
                                fi
                            fi
                        fi
                    fi
                fi
            else
                echo $LINE | grep -q 'div class="cDay"'
                if [ $? = 0 ]; then
                    INDAY=1
                    PART=0
                    DAY=
                    DOP_LABEL=
                    DOP_TYP=
                    DOP_TEMP=
                    ODP_LABEL=
                    ODP_TYP=
                    ODP_TEMP=
                fi
            fi
        done
        )
    
    31.5.2011 14:01 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    Vy jste to za ten týden ještě nevyřešil? V tom případě ukažte kam jste dospěl (zdrojový kód) a nějak to už doladíme. Předpokládám že alespoň pár řádek jste napsal... Víte už jakým nástrojem to budete dělat? V Bash budete potřebovat něco na stažení, asi wget, potom něco na parsování, třeba sed nebo awk.

    Znáte některý z těchto nástrojů? Víte jak se v bash předávají data mezi jednotlivými nástroji? Pro jednoduchost vám doporučuji stáhnout stránku wgetem, a následně parsovat stažený soubor. Až nebudete vědět jak dál, podělte se o váš výsledek.
    31.5.2011 14:32 NN
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    Vy jste to za ten týden ještě nevyřešil?
    lol
    1.6.2011 09:49 NeoV | skóre: 23
    Rozbalit Rozbalit vše Re: Parsovani (Bash)
    No, chalan ten isty dotaz uz zadaval 25.5. :-) ==>

    http://www.abclinuxu.cz/poradna/linux/show/336314

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.