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í
×
    dnes 21:00 | IT novinky

    Společnost Valve zpřísnila pravidla pro obsah, který je možné distribuovat ve službě Steam. Současně řadu her ze Steamu odstranila. V zásadách a pravidlech přibylo omezení 15: Obsah, který by mohl porušovat pravidla a normy stanovené zpracovateli plateb a souvisejícími sítěmi platebních karet a bankami nebo poskytovateli připojení k internetu. Sem spadají zejména určité druhy obsahu pouze pro dospělé.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Komunita

    Dle analytics.usa.gov je za posledních 90 dnů 6,2 % přístupů k webových stránkám a aplikacím federální vlády Spojených států z Linuxu.

    Ladislav Hagara | Komentářů: 0
    včera 17:44 | Zajímavý článek

    Jak si zobrazit pomocí Chrome a na Chromiu založených webových prohlížečích stránky s neplatným certifikátem? Stačí napsat thisisunsafe.

    Ladislav Hagara | Komentářů: 3
    včera 00:33 | Bezpečnostní upozornění

    V repozitáři AUR (Arch User Repository) linuxové distribuce Arch Linux byly nalezeny a odstraněny tři balíčky s malwarem. Jedná se o librewolf-fix-bin, firefox-patch-bin a zen-browser-patched-bin.

    Ladislav Hagara | Komentářů: 15
    včera 00:22 | Komunita

    Dle plánu by Debian 13 s kódovým názvem Trixie měl vyjít v sobotu 9. srpna.

    Ladislav Hagara | Komentářů: 0
    19.7. 13:22 | Komunita

    Vývoj linuxové distribuce Clear Linux (Wikipedie) vyvíjené společností Intel a optimalizováné pro jejich procesory byl oficiálně ukončen.

    Ladislav Hagara | Komentářů: 1
    18.7. 14:00 | Zajímavý článek

    Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    18.7. 12:00 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 1
    17.7. 18:44 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).

    Ladislav Hagara | Komentářů: 1
    17.7. 16:11 | Nová verze

    Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 4
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (26%)
     (22%)
     (4%)
     (6%)
     (2%)
     (4%)
     (4%)
     (32%)
    Celkem 50 hlasů
     Komentářů: 9, poslední dnes 15:56
    Rozcestník

    Dotaz: Načtení souboru do pole

    14.5.2007 10:43 pok | skóre: 11
    Načtení souboru do pole
    Přečteno: 1358×
    Zdravím.

    Chci nějak elegantně načíst obsah souboru do pole, řádek po řádku. Původně jsem si to představoval takto:

    a=( `cat vstup.txt` )

    ale protože na jednotlivých řádcích vstupního souboru je víc slov oddělených mezerou, nedaří se mi. Doufal jsem že toto pomůže:

    a=( $( echo $( cat vstup.txt | sed -e "s/\(.*\)/\"\1\"/g" ) ) )

    Ale i takto dostávám jednotlivé prvky v poli jako jednotlivá slova v souboru. Pravděpodobně mi uniká nějaké nutné escapování. Napadá někoho něco?

    Například:

    Pro soubor:
    a b
    c d e
    f g h
    dostávám:
    echo ${a[2]}
    "c
    BTW: Toto funguje jak chci:
    i=0
    while read line; do
      field[$i]="$line"
      i=`expr $i + 1`
    done < vstup.txt

    Odpovědi

    14.5.2007 12:11 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Načtení souboru do pole

    Zdravím, ten první příkaz je OK. Stačí předtím nastavit proměnnou IFS pouze na znak nového řádku (protože bash řeže řetězec na tokeny podle znaků v ní nalezených).

    Čili:

    IFS=$'\n';
    a=(`cat vstup.txt`);

    S pozdravem
    - Vojta

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    14.5.2007 12:27 pok | skóre: 11
    Rozbalit Rozbalit vše Re: Načtení souboru do pole
    Ha, díky!
    14.5.2007 18:16 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: Načtení souboru do pole

    Ještě jsem si vzpomněl na něco.

    1. Pole má určitě omezenou velikost, takže na velký soubor to asi nebude fungovat (jako maximum bych viděl pár desítek řádků).
    2. Potom by to chtělo obnovit tu IFS na původní hodnotu (takže si na začátku její nastavení zapamatovat do jiné proměnné)

    - Vojta

    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    14.5.2007 12:11 maleprase | skóre: 28
    Rozbalit Rozbalit vše Re: Načtení souboru do pole
    a v cem ze teda nevyhovuje ten priklad na konci ktery funguje jak chces?
    14.5.2007 12:25 pok | skóre: 11
    Rozbalit Rozbalit vše Re: Načtení souboru do pole
    Nešlo mi ani tak o funkci jako spíš o to, proč to nejde tak jak jsem to zkoušel prvně.
    15.5.2007 11:18 mlz | skóre: 12 | blog: Obcas
    Rozbalit Rozbalit vše Re: Načtení souboru do pole
    Zdravím, přijde mi řešit to bashem jako plýtvání zdroji a prostředky a beru to tedy jako cvičení. Ale nevím, pro jaké účely, tak asi prudím zbytečně.

    Ale existuje sed, awk, perl .. a neřeknu Monty
    15.5.2007 13:04 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: Načtení souboru do pole
    K tomuto komentáři se rád připojím. Pythonní
    a = file('vstup.txt').readlines()
    
    Je asi 30x rychlejší než ten příklad v bashi. Soubor s milionem řádků je načtený za 0.7 sekund, zatímco bash se s tím patle 22 sekund. A hlavně - na tak primitivní věc by se v pythonu nikdo neptal, zatímco v bashi je to věda.
    Je mi jasné, že autor dotazu ví co dělá, takže toto píšu spíš pro náhodného kolemjdoucího čtenáře.

    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.