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 05:44 | IT novinky

    Společnost Purism stojící za linuxovými telefony a počítači Librem má nově v nabídce postkvantový šifrátor Librem PQC Encryptor.

    Ladislav Hagara | Komentářů: 0
    včera 18:00 | Nová verze

    VirtualBox, tj. multiplatformní virtualizační software, byl vydán v nové verzi 7.2. Přehled novinek v Changelogu. Vypíchnou lze vylepšené GUI.

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | IT novinky

    Eric Migicovsky, zakladatel společnosti Pebble, v lednu oznámil, že má v plánu spustit výrobu nových hodinek Pebble s již open source PebbleOS. V březnu spustil předprodej hodinek Pebble Time 2 (tenkrát ještě pod názvem Core Time 2) za 225 dolarů s dodáním v prosinci. Včera představil jejich konečný vzhled (YouTube).

    Ladislav Hagara | Komentářů: 2
    včera 12:44 | Zajímavý software

    Byla oznámena nativní podpora protokolu ACME (Automated Certificate Management Environment) ve webovém serveru a reverzní proxy NGINX. Modul nginx-acme je zatím v preview verzi.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 25.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    13.8. 11:55 | IT novinky

    Společnost Perplexity AI působící v oblasti umělé inteligence (AI) podala nevyžádanou nabídku na převzetí webového prohlížeče Chrome internetové firmy Google za 34,5 miliardy dolarů (zhruba 723 miliard Kč). Informovala o tom včera agentura Reuters. Upozornila, že výše nabídky výrazně převyšuje hodnotu firmy Perplexity. Společnost Google se podle ní k nabídce zatím nevyjádřila.

    Ladislav Hagara | Komentářů: 5
    13.8. 04:33 | Bezpečnostní upozornění

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250812 mikrokódů pro své procesory řešící 6 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    13.8. 04:22 | Nová verze

    Byla vydána nová verze 1.25 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    12.8. 13:44 | Nová verze

    Byla vydána beta verze Linux Mintu 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 0
    12.8. 13:00 | IT novinky

    Provozovatel internetové encyklopedie Wikipedie prohrál v Británii soudní spor týkající se některých částí nového zákona o on-line bezpečnosti. Soud ale varoval britského regulátora Ofcom i odpovědné ministerstvo před zaváděním přílišných omezení. Legislativa zpřísňuje požadavky na on-line platformy, ale zároveň čelí kritice za možné omezování svobody slova. Společnost Wikimedia Foundation, která je zodpovědná za fungování

    … více »
    Ladislav Hagara | Komentářů: 2
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (52%)
     (19%)
     (4%)
     (5%)
     (3%)
     (1%)
     (1%)
     (17%)
    Celkem 393 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    Rozcestník

    Dotaz: skript v bashi

    7.11.2011 16:22 tgm126
    skript v bashi
    Přečteno: 540×
    Dobrý den,

    řeším následující problém: Periodicky načítám z db sadu hodnot (select z jedné tabulky). Některé hodnoty jsou kumulativní - potřebuji tedy při jejich zpracování od aktuální hodnoty odečíst hodnotu z předchozího měření. Použití db je vyloučeno - hodnoty je nutno uchovat v souboru.

    Nenapádá prosím někoho způsob jak to v bashi udělat?

    Dík

    Řešení dotazu:


    Odpovědi

    7.11.2011 16:39 l4m4
    Rozbalit Rozbalit vše Re: skript v bashi
    Co udělat? Odečíst čísla ($[a-b])? Zapsat něco do souboru (echo $x >soubor)? Přečíst něco ze souboru (x=$(<soubor))? ???
    7.11.2011 17:02 tgm126
    Rozbalit Rozbalit vše Re: skript v bashi
    Dík moc za rady, rád jsem se poučil (v bashi jsem nikdy nedělal - potřebuji pouze rychle jednorázový skript). Mohl bys prosím svoji odpověď trochu rozvést? Vstupem jsou tyto struktury:
    hodnota1:   1
    hodnota2:   2
    ...
    hodnota200: 200
    nebo mohou být hodnoty na jednom řádku oddělené čárkou.

    Dá se to nějak elegantněji vyřešit aniž bych zaváděl 200 proměnných?

    Díky za trpělivost.
    Tarmaq avatar 7.11.2011 17:24 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: skript v bashi
    mohl bys uvest nejaky konkretni priklad treba na trech hodnotach + jaky ma byt vystup? nejak z tohoto prikladu nechapu co s cim se ma scitat..
    Don't panic!
    7.11.2011 23:38 tgm126
    Rozbalit Rozbalit vše Re: skript v bashi
    - získám z db sadu hodnot - uložím do souboru buď do jednoho řádku nebo pod sebe viz výše (např. 1234,3456,5678,.......) - po čase získám další sadu dat (např. 1235,3457,5679,.......) potřebuji od aktuálních hodnot odečíst ty uložené a výsledek si zapsat (chci tedy získat 1,1,1,.....)
    8.11.2011 15:56 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: skript v bashi
    Procházet současně dva soubory (starý a nový) není pro bash ideální úkol, můžete je ale projít sekvenčně a místo zavádění 200 proměnných zavést pole (ne že by v tom byl velký rozdíl).
    #!/bin/bash
    
    declare -a arr;
    
    i=0;
    while read label value; do
      echo "$label|$value";
      arr[i]=$value;
      ((i++));
    done < <(sed -e "s/,/\n/g" old.txt)
    
    i=0;
    while read label value; do
      echo "$label|$value";
      echo "$value - ${arr[$i]}";
      arr[i]=$((value - arr[i]));
      echo "${arr[i]}";
      ((i++));
    done < <(sed -e "s/,/\n/g" new.txt)
    
    8.11.2011 15:58 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: skript v bashi
    Pokud by vstupy byly nějaké proměnlivé, ne jen 200 po sobě jdoucích vždy stejně seřazených proměnných, lze použít i asociativní pole (název proměnné jako klíč).
    9.11.2011 11:21 tgm126
    Rozbalit Rozbalit vše Re: skript v bashi
    Dík, to je to, co jsem hledal :)
    rADOn avatar 7.11.2011 18:39 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: skript v bashi
    jestli tomu dobre rozumim, potrebujes awk skript. V BEGIN sekci si nactes jeden vstupni soubor do asociativniho pole. Pres druhy vstupni soubor (data z db) pak budes iterovat a pricitat je k tomu co uz mas v asoc. poli. V END sekci pripadne muzes poresit polozky ktere pribyly/ubyly.

    Pokud by se data nevesly do pameti, budes muset obe sady zapsat na disk, prohnat sortem a zpracovat paralelelne, coz uz je kapku slozitejsi…

    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    7.11.2011 19:42 Kit
    Rozbalit Rozbalit vše Re: skript v bashi
    Vylučování DB je krátkozraké. DB není jen MySQL. Je spousta jiných DB, které by se pro tento účel hodily. Naopak bych raději vyloučil uchování v běžném souboru kvůli ACID. Výběr je skutečně velmi široký.

    Pokud bude skript běžet trvale, je možné použít 2 asociativní pole v paměti shellu. Jedno pro staré výsledky, druhé pro nové. V Bashi to sice nebude extra rychlé, ale pokud to není náročná aplikace, pojede to dobře. V Perlu nebo PHP to může být ještě lepší, ale pro 200 proměnných by to mohl být kanón na vrabce.
    martin-ux avatar 8.11.2011 12:49 martin-ux | skóre: 18 | Bratislava
    Rozbalit Rozbalit vše Re: skript v bashi
    osobne by som toto riesil v perl-e .. taky rychly dirty-style script by mohol vyzerat:
    #!/usr/bin/perl -w
    
    use warnings;
    use strict;
    
    my @db = ();
    while (<>) {
            push @db, [ split('[\t\n,]') ];
    }
    
    my ($dim, $i,$j);
    $dim = @{$db[0]};
    
    for $i (0 .. $#db-1 ) {
            for ($j =0; $j < $dim; $j++) {
                    print $db[$i+1][$j] - $db[$i][$j] . ',';
            }
            print "\n";
    }
    
    vstupne data:
    $ cat test.in
    5,1,6,1,6,4,9
    4,1,6,8,2,1,7
    7,9,2,3,6,1,6
    2,2,1,5,7,2,5
    $
    
    a samotny vystup:
    $ ./output.pl test.in
    -1,0,0,7,-4,-3,-2,
    3,8,-4,-5,4,0,-1,
    -5,-7,-1,2,1,1,-1,
    $
    script odpocitava n+1 riadok od n teho. dirty-style preto, lebo vstup, velkost vektorov (pocet cisel v riadku) nie je kontrolovany ..

    ukazuje princip, ako by si to mohol spravit. (jj, v perle, nie v bashi).

    ..when you do things right, people won't be sure you've done anything at all..

    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.