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 14:44 | Nová verze

Byla vydána nová verze 42.3 linuxové distribuce openSUSE Leap. Jedná se už o třetí vydání, které staví na SUSE Linux Enterprise (SLE). Výchozím jádrem je opět poslední LTS verze, tedy řada 4.4. Podrobnosti v oznámení o vydání a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 6
dnes 14:30 | Nová verze

Google Chrome 60 byl prohlášen za stabilní. Nejnovější stabilní verze 60.0.3112.78 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 40 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
včera 22:33 | IT novinky

Společnosti Adobe, Apple, Facebook, Google, Microsoft a Mozilla společně oznámily konec Flashe. Podpora Flashe oficiálně skončí na konci roku 2020.

Ladislav Hagara | Komentářů: 13
včera 05:55 | Komunita

Před 10 lety, v červenci 2007, se začal prodávat svobodný chytrý telefon Neo 1973 (vnitřní označení GTA01). Za jeho vývojem stáli vývojáři projektu Openmoko (Wikipedie). O rok později bylo možné koupit jejich druhý telefon Neo FreeRunner (GTA02). V roce 2011 byl představena platforma GTA04. Tuto platformu využívá také projekt Neo900, jehož cílem je vývoj nástupce telefonu Nokia N900. Nahlédnutí do historie Openmoko a další informace v článku na Vanille.de [Hacker News].

Ladislav Hagara | Komentářů: 22
včera 04:44 | Komunita

Tým Debianu zabývající se reprodukovatelnými sestaveními (Reproducible Builds), tj. kdokoli může nezávisle ověřit, že daný binární .deb balíček vznikl překladem daných zdrojových kódů, oznámil, že 94 % balíčků Debianu lze přeložit a sestavit reprodukovatelně. V únory 2015 to bylo 83 % [reddit].

Ladislav Hagara | Komentářů: 4
24.7. 11:22 | Komunita

Mozilla.cz informuje, že na blogu Mozilly věnovaném bezpečnosti byly zveřejněny výsledky bezpečnostního auditu služby Firefox Accounts, v českých překladech účet Firefoxu, sloužící hlavně k přihlašování k synchronizaci Firefox Sync. Nalezeno bylo celkem 15 bezpečnostních chyb, z toho jedna byla označena jako kritická a tři jako vážné.

Ladislav Hagara | Komentářů: 0
24.7. 11:00 | Nová verze

Byla vydána první stabilní verze 1.0 svobodného komunikačního softwaru Ring (Wikipedie). Ring, původně SFLphone, je součástí projektu GNU [reddit].

Ladislav Hagara | Komentářů: 3
24.7. 06:00 | Zajímavý projekt

Warner Skoch na svých stránkách zveřejnil návod (YouTube) na zhotovení kapesní herní konzole MintyPi. Konzole MintyPi je postavena na Raspberry Pi Zero W a RetroPie. Jako obal slouží plechová krabička od mentolek.

Ladislav Hagara | Komentářů: 0
23.7. 02:00 | Nová verze

Byl vydán Debian 9.1, tj. první opravná verze Debianu 9 s kódovým názvem Stretch a Debian 8.9, tj. devátá opravná verze Debianu 8 s kódovým názvem Jessie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 9 a Debianu 8 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 38
22.7. 15:50 | Zajímavý článek

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice zveřejnila čtyřiačtyřicetistránkovou výroční zprávu za rok 2016. K dispozici je ve formátu pdf ve vysokém (21,68 MB) a nízkém (7,1 MB) rozlišení. Zpráva byla vytvořena ve Scribusu.

Ladislav Hagara | Komentářů: 0
Těžíte nějakou kryptoměnu?
 (4%)
 (2%)
 (18%)
 (76%)
Celkem 99 hlasů
 Komentářů: 5, poslední dnes 08:26
    Rozcestník

    Dotaz: awk - vypis dvojrozmerneho pola do tvaru mriezky

    11.2.2013 05:32 victor8 | skóre: 24 | blog: blog | Košice
    awk - vypis dvojrozmerneho pola do tvaru mriezky
    Přečteno: 208×

    Zdravim nespavcov :) Uz dlhsi cas sa mordujem so spracovanim vstupnych dat v tvare:

    #attr2:attr3:attr6:attr5
    value2r1:value3r1:value6r1:value5r1
    #attr1:attr5:attr3:attr2:attr6
    value1r2:value5r2:value3r2:value2r2:value6r2
    value1r3:value5r3:value3r3:value2r3:value6r3
    #attr8:attr2:attr3:attr4:attr5:attr7:attr1
    #attr1:attr2:attr3:attr5
    value1r4:value2r4:value3r4:value5r4
    

    Pravidla pre tvar vstupneho suboru:

    • oddelovacom riadkov je LF
    • oddelovacom stlpcov je ":"
    • Subor sa sklada z blokov. Kazdy blok pozostava z riadka zacinajuceho mriezkou (obsahuje nazvy atributov), ktory moze (ale nemusi) byt nasledovany riadkami s hodnotami.
    • Poradie atributov sa v jednotlivych blokoch moze menit
    • Pocet a vyskyt atributov sa moze v jednotlivych blokoch menit

    Mojim cielom je dostat ich do tvaru:

    #attr1:attr2:attr3:attr4:attr5:attr6:attr7:attr8
    :value2r1:value3r1::value5r1:value6r1
    value1r2:value2r2:value3r2::value5r2:value6r2
    value1r3:value2r3:value3r3::value5r3:value6r3
    value1r4:value2r4:value3r4::value5r4
    

    pripadne:

    #attr1:attr2:attr3:attr4:attr5:attr6:attr7:attr8
    :value2-1:value3-1::value5-1:value6-1::
    value1-2:value2-2:value3-2::value5-2:value6-2::
    value1-3:value2-3:value3-3::value5-3:value6-3::
    value1-4:value2-4:value3-4::value5-4:::
    

    cize, vertikalne ich zarovnat a zoradit podla attrX, ktore budu vypisane v prvom riadku vystupneho suboru ako hlavicka. Cielom je predpriprava suboru na dalsie spracovanie tabulkovym kalkulatorom. Viacero dvojbodiek na konci riadka ako je ukazane vyssie nicomu neprekaza, ale ani nie je potrebnych. (vychadzam z toho ze ich povolenim by sa dal zjednodusit kod, a tabulkovy kalkulator ich aj tak odignoruje

    Zatial som dospel k nasledovnemu:

    awk '
    BEGIN { OFS=FS=":"; record=0 }
    
    # spracovanie zaciatku bloku; nazvy premennych ukladam do attr[i]
    {
     if ($0 ~ /^#/) {
      columns=split(substr($0,2),attr);
      #print"\n"; for(i in attr) print "attr["i"] = "attr[i]; #debug1
      next;
     }
    
    # spracovanie riadkov s hodnotami; hodnoty ukladam do r[record, attr[i]]
     record++;
     numvalues=split($0,value);
      for(i=1;i<=numvalues;i++) {
       r[record SUBSEP attr[i]]= value[i];
       print "r ["record", "attr[i]"] = "r[record SUBSEP attr[i]];  #debug2
      }
    }
    
    END{
     print "-----" #debug3
    
     for (combined in r) {
      #print combined;   #debug4
      num=split(combined, separate, SUBSEP);
      #print separate[1], separate[2], r[separate[1] SUBSEP separate[2]]; #debug5
      # a co dal?
    }
    
    
    

    Vystupom z debug2 je

    r [1, attr2] = value2r1
    r [1, attr3] = value3r1
    r [1, attr6] = value6r1
    r [1, attr5] = value5r1
    r [2, attr1] = value1r2
    r [2, attr5] = value5r2
    r [2, attr3] = value3r2
    r [2, attr2] = value2r2
    r [2, attr6] = value6r2
    r [3, attr1] = value1r3
    r [3, attr5] = value5r3
    r [3, attr3] = value3r3
    r [3, attr2] = value2r3
    r [3, attr6] = value6r3
    r [4, attr1] = value1r4
    r [4, attr2] = value2r4
    r [4, attr3] = value3r4
    r [4, attr5] = value5r4
    
    , takze verim, ze data mam rozparsovane a ulozene v asociativnom poli v poriadku.

    Problemom pre mna je, ako z tohoto vyskladat vysledny vypis. Potrebujem nejako rozumne toto pole vyiterovat, no napada ma len klasicka konstrukcia: dva zanorene fory, ktora mi tu ale fungovat nebude, kedze nemam dva pouzitelne indexy.

    Nejake napady? :)


    Řešení dotazu:


    Odpovědi

    11.2.2013 10:06 l4m4
    Rozbalit Rozbalit vše Re: awk - vypis dvojrozmerneho pola do tvaru mriezky
    Je to nutné dělat v awk?

    Samozřejmě to je možné dělat v awk, ale jelikož je nutné si celý soubor rozparsovat do datových struktur, protože chceš mít ve výsledné hlavičce sjednocení všech atributů, udělal bych to v pythonu:
    import sys
    
    attrs = set()
    data = []
    for line in sys.stdin:
        line = line.strip()
        if not line:
            continue
        if line[0] == '#':
            currentattrs = line[1:].split(':')
            attrs.update(currentattrs)
        else:
            data.append(dict(zip(currentattrs, line.split(':'))))
    
    keys = list(sorted(attrs))
    print '#' + ':'.join(keys)
    for row in data:
        print ':'.join(row.get(k, '') for k in keys)
    
    11.2.2013 13:46 victor8 | skóre: 24 | blog: blog | Košice
    Rozbalit Rozbalit vše Re: awk - vypis dvojrozmerneho pola do tvaru mriezky
    Vdaka za tip ako to spravit v Pythone.

    Bohuzial je to nutne robit v awk, nakolko na servri kde to bude bezat nic ine okrem (plain) awk a sedu nemam a nainstalovat si tam python nemozem :)
    Řešení 1× (victor8 (tazatel))
    11.2.2013 10:55 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: awk - vypis dvojrozmerneho pola do tvaru mriezky
    Zaklad je si pripravit pole se vsemi attributy. V awk napriklad takto:
    BEGIN {
        OFS=FS=":"; record=0
    }
    
    # spracovanie zaciatku bloku; nazvy premennych ukladam do attr[i]
    {
        if ($0 ~ /^#/) {
            columns = split(substr($0, 2), attr);
            for(c in attr) {
                # ulozim si vsechny attributy
                all[attr[c]] = attr[c];
            }
            next;
        }
    
        # spracovanie riadkov s hodnotami; hodnoty ukladam do r[record, attr[i]]
        record++;
        numvalues = split($0, value);
        for(i = 1; i <= numvalues; i++) {
            r[record, attr[i]] = value[i];
        }
    }
    
    END{
        nc = asort(all, sort);
        # vypis hlavicky
        ORS = "";
        print("#");
        ORS = ":";
        for (c = 1; c < nc; c++) {
            print(sort[c]);
        }
        ORS = "\n";
        print(sort[c]);
        # vypis obsahu
        for (l = 1; l <= record; l++) {
            ORS = ":";
            for (c = 1; c < nc; c++) {
                print(r[l, sort[c]]);
            }
            ORS = "\n";
            print(r[l, sort[c]]);
        }
    }
    
    Vysledek:
    $ awk -f s.awk < in.txt 
    #attr1:attr2:attr3:attr4:attr5:attr6:attr7:attr8
    :value2r1:value3r1::value5r1:value6r1::
    value1r2:value2r2:value3r2::value5r2:value6r2::
    value1r3:value2r3:value3r3::value5r3:value6r3::
    value1r4:value2r4:value3r4::value5r4:::
    
    11.2.2013 13:13 l4m4
    Rozbalit Rozbalit vše Re: awk - vypis dvojrozmerneho pola do tvaru mriezky
    Ano, v awk to sice lze, ale...

    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.