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í
×

    8.11. 00:33 | Nová verze

    Byla vydána OpenIndiana 2026.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).

    Ladislav Hagara | Komentářů: 17
    8.11. 00:22 | IT novinky

    Americký výrobce polovodičů onsemi (ON Semiconductor) zrušil plány na rozšíření výroby v rožnovském závodě v Česku za dvě miliardy dolarů (podle aktuálního kurzu zhruba 43,5 mld. Kč). Důvodem je vývoj na trhu.

    Ladislav Hagara | Komentářů: 33
    7.11. 13:00 | Bezpečnostní upozornění
    Nové vydání zlib opravuje několik problémů při kompresi a dekompresi dat, přetečení bufferů, čtení mimo vyhrazenou paměť, únik neinicializovaných dat. Zvlášť významné jsou chyby v inflateGetDictionary(), inflateSync() a gzwrite(), které mohou způsobit poškození paměti. Vysoká relevance - zlib používá řada systémových i aplikačních komponent.
    vencour | Komentářů: 3
    7.11. 12:25 | Bezpečnostní upozornění
    Digicert hlásí neoprávněné čtení archivních zákaznických údajů. Došlo k němu po migraci z února 2025, po níž se interní systém, dříve dostupný jen přes VPN, stal přístupným z internetu. Chyba v oprávněních umožnila nově vytvořeným účtům číst archivní záznamy. K přístupu k datům mělo dojít mezi 27. červnem a 2. červencem 2026. DigiCert neoprávněné čtení potvrdil až 19. října 2026. Problém zpočátku vyhodnotil jako tvorbu účtů, ne jako … více »
    vencour | Komentářů: 2
    7.11. 04:44 | Pozvánky

    O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.

    Ladislav Hagara | Komentářů: 0
    7.11. 02:11 | IT novinky

    Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.

    vencour | Komentářů: 1
    7.11. 02:00 | IT novinky

    Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.

    vencour | Komentářů: 0
    6.11. 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

    Ladislav Hagara | Komentářů: 5
    6.11. 04:55 | Nová verze

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 3
    6.11. 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 3039 hlasů
     Komentářů: 36, poslední včera 22:38
    Rozcestník

    Dotaz: Ulozeni a cteni z pole

    29.7.2015 16:40 Lucius
    Ulozeni a cteni z pole
    Přečteno: 731×
    Ahoj, resim takovy problem, potreboval bych ulozit do pole zaznamy ze souboru
    array=($(cat mujsoubor.txt))  <- ve skutecnosti je tam slozitejsi sed a awk, ktery z procesuje soubor a udela vystup viz nize

    mujsoubor.txt radek;654645 jana;13221 andrea;55465 ...

    ted bych potreboval jednotlive radky ulozit do promennych, zkousel jsem
      while IFS=';' read jmeno cislo; do
                    echo $jmeno
                    echo $cislo
            done < ${array[*]}
    Ale bohuzel takto mi to nefunguje, poradite? Zkousim v bashi. Diky

    Odpovědi

    29.7.2015 22:02 NN
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    Ja vidim nekolik problemu. Ten cyklus nedava smysl protoze nacitas radky do stale stejnych promennych, tzn. na konci budes mit ulozeny jen posledni radek(najedna se o nacitani do pole array+=('foo')..). Oddelovac IFS je sice dobry napad, ale neni jasne ktere hodnoty chces spojovat. Otazky:
    mujsoubor.txt radek;654645 jana;13221 andrea;55465
    Retezec 'mujsoubor.txt' se nachazi v souboru a je potreba jej vynechat? Soubor obsahuje jeden dlouhy retez nebo radky? Je treba spojit 'radek' a 654645, nebo 654645 a 'jana'? K cemu je pak retezec 'radek'?

    Nezname format vstupniho souboru, ani vystupniho, je mozne, ze cele reseni lze nafromatovat rovnou ze vstupniho souboru, bez zbytecnych cyklu. Konecne pokud se jedna o domaci ulohu, tak ta sem nepatri vubec.
    30.7.2015 14:08 Lucius
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    ted jsem to spatne napsal, soubor je ve skutecnosti takoveho tvaru:
    mujsoubor.txt 
    
    radek;654645 
    jana;13221 
    andrea;55465
    Muj cil je tento seznam projet a nacist si pokazde prvni promennou=radek a druhou=654654, atd, dokud jsou tam radky. Omlouvam se za zmateni
    30.7.2015 17:10 NN
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    No a co ten 'mujsoubor.txt' a prazdny radek, to se ma vynechat? Btw. to je ten soubor, ktery jsi nacpal do promenne array?

    No idealni by bylo prvni dva radky odstrihnout(sed) a pak to pres tvuj cyklus nacist do pole.
    30.7.2015 17:30 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    Vyměň ";" za "=", ulož to do mujsoubor.sh a pak to spusť
    . mujsoubor.sh
    Ta tečka vpředu není překlep, ale příkaz.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    29.7.2015 22:26 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    Možná to chce jen drobnou úpravu:
    cat mujsoubor.txt |
        while IFS=';' read cislo jmeno; do
            echo $jmeno
            echo $cislo
        done
    ale stejně by to v AWK bylo rychlejší a pohodlnější:
    cat mujsoubor.txt |
        awk 'BEGIN {RS=";"} {print $2, $1}'
    Ovšem cpát to do pole je nesmysl. Máš k tomu nějaký závažný důvod?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    1.8.2015 03:32 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole

    Tohle by měla být povinná četba, klidně místo Lojzy Jiráska. ;-)

    1.8.2015 03:38 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    Přečti si ještě jednou původní dotaz a pak mudruj. Místo "cat mujsoubor.txt" tam má výstup z jiného programu.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    1.8.2015 09:50 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole

    Ne, já budu napřed mudrovat, protože pipeline začínající na cat jednoho souboru je prostě špatný příklad, celkem bez ohledu na okolnosti. Povaluje se na webu v nesčetných obměnách a přijde mi zbytečné přidávat další. Jak si to tazatel upraví, aby mu to četlo pipe z jiného programu, to už je jeho věc.

    1.8.2015 14:51 nobody
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole
    nejspis te chtel navest na :
    <- ve skutecnosti je tam slozitejsi sed a awk, ktery z procesuje soubor a udela vystup viz nize
    2.8.2015 00:15 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole

    Děkuji, ale dobře jsem rozuměl, co tím myslel. Výsledkem ovšem je, že se na webu povalují zase další dva špatné příklady použití cat (který má, pravda, představovat „něco jiného“). Ať tak nebo tak, ty příklady jsou prostě špatné. Když už ne kvůli procesu navíc, tak třeba kvůli subshellu. Pro ilustraci je nejlepší třeba tohle:

    cat /etc/passwd | readarray -t pole_na_hovno
    readarray -t pole_s_daty < /etc/passwd
    

    První pole bude prázdné (protože takhle pipe prostě funguje, forknutý shell nemůže ovlivnit proměnné v tom původním), zatímco to druhé bude definované v „hlavním“ shellu, jak by člověk čekal. Při čtení dat do pole je cat jednoho souboru a následný pipe v podstatě zdrojem chyb číslo jedna. Když nahradíme cat za něco jiného, nijak to nepomůže. Tentýž problém tam bude pořád. Snad jediný případ, kdy cat jednoho souboru dává smysl, je něco takového:

    { sed 's/\(^[^:]\+\):/another\1:/' /etc/passwd; cat /etc/passwd; } | další | zpracování
    

    Tohle^^^ je samozřejmě ptákovina, ale umím si představit, že by to s drobnou obměnou mohlo dělat něco smysluplného. Možná je ale přehlednější tohle:

    cat <(sed 's/\(^[^:]\+\):/another\1:/' /etc/passwd) /etc/passwd | další | zpracování
    

    A to už není cat jednoho souboru, takže to je celkem OK. První možnost může být o něco efektivnější, protože výstup ze sedu nemusí přežvýkat cat. Pokud ovšem cat i shell používají v tomto případě splice(), je to nakonec jedno, co do efektivity.

    1.8.2015 03:00 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole

    První a nejsnazší možnost je tohle:

    while read line; do
        IFS=';' read jmeno cislo <<<"${line}"
        echo "Jméno: ${jmeno}"
        echo "Číslo: ${cislo}"
    done < mujsoubor.txt
    

    Pokud chceš experimentovat s polem a načíst si řádky napřed do pole, to je samozřejmě taky možné:

    readarray -t lines < mujsoubor.txt
    for line in "${lines[@]}"; do
        IFS=';' read jmeno cislo <<<"${line}"
        echo "Jméno: ${jmeno}"
        echo "Číslo: ${cislo}"
    done
    

    Pro úplnost dodávám, že vstupní soubor vypadá takto…

    radek;654645 
    jana;13221 
    andrea;55465
    

    …a výstup z tohoto „parseru“ vypadá v obou případech takto:

    Jméno: radek
    Číslo: 654645
    Jméno: jana
    Číslo: 13221
    Jméno: andrea
    Číslo: 55465
    

    Všechny výše uvedené parametry jsou popsané v man bash; stačí si najít kapitolu zvanou Shell Builtin Commands, která je tam někde ke konci.

    Jo a mimochodem, pole přináší jistý bonus navíc v podobě indexů, které můžeš použít třeba pro následující trik, chceš-li:

    readarray -t lines < mujsoubor.txt
    echo "Počet položek adresáře: ${#lines[@]}"
    for index in "${!lines[@]}"; do
        IFS=';' read jmeno cislo <<<"${lines[index]}"
        echo "$((index + 1)). záznam: Jméno: ${jmeno} Číslo: ${cislo}"
    done
    
    Výstup z posledního skriptu bude pak následující:
    Počet položek adresáře: 3
    1. záznam: Jméno: radek Číslo: 654645 
    2. záznam: Jméno: jana Číslo: 13221 
    3. záznam: Jméno: andrea Číslo: 55465
    

    Z výše uvedeného už snad nebude problém nějaký vhodný parsovací skript vymyslet. :-)

    1.8.2015 03:05 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Ulozeni a cteni z pole

    Aha! Příliš jsem se nechal unést iterací přes pole a parsováním řádků za každou cenu. On ale read sám od sebe umí všechno potřebné, takže ještě kratší (se stejným výstupem) bude tohle:

    while IFS=';' read jmeno cislo; do
      echo "Jméno: ${jmeno}"
      echo "Číslo: ${cislo}"
    done < mujsoubor.txt
    

    Založit nové vlákno • Nahoru

    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.