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 15:22 | Nová verze

    Byla vydána nová verze 18 integrovaného vývojového prostředí (IDE) Qt Creator. S podporou Development Containers. Podrobný přehled novinek v changelogu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:55 | Nová verze

    Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 2.0. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).

    Ladislav Hagara | Komentářů: 1
    dnes 02:55 | Nová verze

    Google Chrome 142 byl prohlášen za stabilní. Nejnovější stabilní verze 142.0.7444.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 20 bezpečnostních chyb. Za nejvážnější z nich bylo vyplaceno 50 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    dnes 01:22 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 17:00 | Upozornění

    Národní identitní autorita, tedy NIA ID, MeG a eOP jsou nedostupné. Na nápravě se pracuje [𝕏].

    Ladislav Hagara | Komentářů: 8
    včera 16:44 | IT novinky

    Americký výrobce čipů Nvidia se stal první firmou na světě, jejíž tržní hodnota dosáhla pěti bilionů USD (104,5 bilionu Kč). Nvidia stojí v čele světového trhu s čipy pro umělou inteligenci (AI) a výrazně těží z prudkého růstu zájmu o tuto technologii. Nvidia již byla první firmou, která překonala hranici čtyř bilionů USD, a to letos v červenci.

    Ladislav Hagara | Komentářů: 6
    včera 14:11 | Komunita

    Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).

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

    TrueNAS (Wikipedie), tj. open source storage platforma postavená na Linuxu, byl vydán ve verzi 25.10 Goldeye. Přináší NVMe over Fabric (NVMe-oF) nebo OpenZFS 2.3.4.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | Nová verze

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

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

    České základní a střední školy čelí alarmujícímu stavu kybernetické bezpečnosti. Až 89 % identifikovaných zranitelností v IT infrastruktuře vzdělávacích institucí dosahuje kritické úrovně, což znamená, že útočníci mohou vzdáleně převzít kontrolu nad klíčovými systémy. Školy navíc často provozují zastaralé technologie, i roky nechávají zařízení bez potřebných aktualizací softwaru a používají k nim pouze výchozí, všeobecně známá

    … více »
    Ladislav Hagara | Komentářů: 16
    Jaké řešení používáte k vývoji / práci?
     (36%)
     (48%)
     (19%)
     (19%)
     (22%)
     (17%)
     (21%)
     (16%)
     (17%)
    Celkem 285 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    Rozcestník

    Dotaz: Zpracování dat z tabulky pomocí awk

    21.5.2020 09:23 Lukas48
    Zpracování dat z tabulky pomocí awk
    Přečteno: 346×
    Ahoj, prosím o pomoc. Potřebuji udělat script, který mi bude počítat průměrnou hodnotu z čísel uvedené ve sloupci tabulky.

    př. tab

    a aa 1 aaa b bb 2 bbb c cc 3 ccc d dd 4 ddd

    -> tabulka je umístěna v txt souboru. Potřebuji sloupec s čísly postupně načíst do proměnné a následně sečíst. To jsem chtěl provést pomocí cyklu, kde nejdříve zjistím kolik položek v souboru je (pocet) a následné bych chtěl projít tento sloupec jako pole a postupně načítat jednotlivé položky do proměnné (suma). A potom udělat průměr. Jenže problém je v načtení dat ze souboru - hlásí mi to "command not found" Mužete mi prosím někdo pomoct? Předem děkuju

    #!/bin/sh

    pocet=$(awk {$3} data.txt) for(i=0 ; $i<=$pocet ; $i++) do x= awk /$i/ {$3} data.txt suma= $($suma + $x)

    #-------nebo takhle ale tohle taky nefunguje--------- suma=$($suma + $(awk '/$i/ {$3}' data.txt))

    done prumer=$($suma / $pocet) echo prumer

    Řešení dotazu:


    Odpovědi

    21.5.2020 09:48 Lukas48
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk
    Příloha:

    sorry, ale to formatování...napíšu to znova

    př. tab

     

    a b 1 d
    a b 2 d
    a b 3

    d

    a b 4 d
    21.5.2020 09:58 drnest | skóre: 13 | blog: Dřinu nechte strojům
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk
    Má to být úplně jinak. Řekněme, že tě zajímá třetí sloupeček:
    {
        soucet=soucet+$3
        i++
        # print i, soucet # odkomentuj zacatek, abys videl jak to nacita
    }
    
    END {
        print soucet/i
    }
    
    21.5.2020 10:00 drnest | skóre: 13 | blog: Dřinu nechte strojům
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk
    Ten prográmek uložíš jako tab.awk, data máš v tab.txt a spustíš to: awk -f tab.awk tab.txt
    21.5.2020 18:42 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk

    Jakou výhodu má mít to i ve srovnání s NR?

    21.5.2020 10:22 debian+
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk
    Ak iba cisiel:
    echo "a 3 b z 7 8" | tr " " "\n"| awk 'BEGIN { sum=0; count=0} /([0-9])/ {sum = sum + $1 ; (count++) } END { print sum / count }'
    Ak len priemer stlpcov:
     echo -e "a 3 b z 7 8\na 5 b z 9 10" | awk 'BEGIN { sumA=sumB=sumC=count=0} /([0-9])/ {sumA = sumA + $2 ; sumB = sumB + $5 ;sumC = sumC + $6 ; (count++) } END { print sumA / count " " sumB / count " " sumC / count}'
    21.5.2020 18:39 pavele
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk
    Jinak bacha na locales.

    Nevím, jestli je to ještě dnes pravda, ale pro počítání s desetinnou čárkou jsem kdysi musel použít parametr "--use-lc-numeric".

    Taky existuje mawk, který je pro počítání většího množství dat mnohem rychlejší.
    21.5.2020 10:23 debian+
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk
    Ak iba cisiel:
    echo "a 3 b z 7 8" | tr " " "\n"| awk 'BEGIN { sum=0; count=0} /([0-9])/ {sum = sum + $1 ; (count++) } END { print sum / count }'
    Ak len priemer stlpcov (tu netreba /([0-9])/):
     echo -e "a 3 b z 7 8\na 5 b z 9 10" | awk 'BEGIN { sumA=sumB=sumC=count=0} {sumA = sumA + $2 ; sumB = sumB + $5 ;sumC = sumC + $6 ; (count++) } END { print sumA / count " " sumB / count " " sumC / count}'
    21.5.2020 18:40 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Zpracování dat z tabulky pomocí awk

    Šmarja! Tady v tom vlákně je normálně úplně nablito! :-D

    awk '{sum += $3} END {print sum / NR}' < data.txt
    

    (Pokud by náhodou hrozilo, že součet čísel překročí nějaké obrovské číslo (třeba 64-bitové, 18446744073709551616, byť konkrétní limit není rozumně definovaný a pojí se s ním bug), dá se AWK pomocí -M říct, aby používalo GNU GMP, tedy neomezená čísla.)

    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.