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í
×
    včera 22:44 | Nová verze

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

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

    CrossOver, komerční produkt založený na Wine, byl vydán ve verzi 26. Přehled novinek v ChangeLogu. CrossOver 26 vychází z Wine 11.0, D3DMetal 3.0, DXMT 0.72, Wine Mono 10.4.1 a vkd3d 1.18. Do 17. února lze koupit CrossOver+ se slevou 26 %.

    Ladislav Hagara | Komentářů: 5
    včera 14:22 | Komunita

    KiCad je nově k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit [Mastodon, 𝕏].

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

    Šenčenská firma Seeed Studio představila projekt levného robotického ramena reBot Arm B601, primárně coby pomůcky pro studenty a výzkumníky. Paže má 6 stupňů volnosti, dosah 650 mm a nosnost 1,5 kilogramu, podporované platformy mají být ROS1, ROS2, LeRobot, Pinocchio a Isaac Sim, krom toho bude k dispozici vlastní SDK napsané v Pythonu. Kompletní seznam součástek, videonávody a nejspíš i cena budou zveřejněny až koncem tohoto měsíce.

    … více »
    NUKE GAZA! 🎆 | Komentářů: 7
    včera 11:11 | Nová verze

    Byla vydána nová verze 36.0, tj. první stabilní verze nové řady 36, svobodného multimediálního centra MythTV (Wikipedie). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    včera 04:44 | Nová verze

    Byl vydán LineageOS 23.2 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu.

    Ladislav Hagara | Komentářů: 3
    včera 03:44 | IT novinky

    Od března budou mít uživatelé Discordu bez ověření věku pouze minimální práva vhodná pro teenagery.

    Ladislav Hagara | Komentářů: 23
    9.2. 23:43 | IT novinky

    Evropská komise (EK) předběžně shledala čínskou sociální síť pro sdílení krátkých videí TikTok návykovým designem v rozporu s unijním nařízením o digitálních službách (DSA). Komise, která je exekutivním orgánem Evropské unie a má rozsáhlé pravomoci, o tom informovala v tiskovém sdělení. TikTok v reakci uvedl, že EK o platformě vykreslila podle něj zcela nepravdivý obraz, a proto se bude bránit.… více »

    Ladislav Hagara | Komentářů: 19
    9.2. 18:33 | Nová verze

    Offpunk byl vydán ve verzi 3.0. Jedná se o webový prohlížeč běžící v terminálu a podporující také protokoly Gemini, Gopher a RSS. Přibyl nástroj xkcdpunk pro zobrazení XKCD v terminálu.

    Ladislav Hagara | Komentářů: 0
    9.2. 18:22 | Zajímavý projekt

    Promethee je projekt, který implementuje UEFI (Unified Extensible Firmware Interface) bindingy pro JavaScript. Z bootovacího média načítá a spouští soubor 'script.js', který může používat UEFI služby. Cílem je vytvořit zavaděč, který lze přizpůsobit pomocí HTML/CSS/JS. Repozitář se zdrojovými kódy je na Codebergu.

    NUKE GAZA! 🎆 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (10%)
     (26%)
     (3%)
     (5%)
     (2%)
     (12%)
     (28%)
    Celkem 833 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: skript v bashi

    7.11.2011 16:22 tgm126
    skript v bashi
    Přečteno: 577×
    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.