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

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).

    ʚĭɞ 🍉 | Komentářů: 0
    dnes 10:55 | IT novinky

    Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.

    Ladislav Hagara | Komentářů: 1
    dnes 03:55 | Komunita

    KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.

    Ladislav Hagara | Komentářů: 1
    dnes 03:22 | Nová verze

    Byl vydán Mozilla Firefox 158.0. Stejně jako Chrome 155 s podporou JPEG XL (test). Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 158 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    dnes 03:00 | Nová verze

    Svobodný kancelářský balík ONLYOFFICE (Wikipedie) byl vydán ve verzi 10.0. Jak online Docs, tak i offline Desktop Editors. Přehled novinek také na YouTube.

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

    Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.

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

    Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 3
    včera 04:00 | Komunita

    Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).

    ❗Červivý Hřib krade❗ | Komentářů: 26
    včera 03:33 | Nová verze

    V červnu byla představena aplikace Myna pro převod řeči na text v prostředí desktopu Ubuntu. Včera byla Myna zpřístupněna širší komunitě Ubuntu formou technologické ukázky dostupné v Ubuntu 24.04 LTS, Ubuntu 26.04 LTS a Ubuntu 26.10 s GNOME na Waylandu.

    Ladislav Hagara | Komentářů: 0
    12.10. 21:11 | Komunita

    Ubuntu 27.04 bude Tenacious T-Rex.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2843 hlasů
     Komentářů: 32, poslední 11.10. 17:02
    Rozcestník

    Dotaz: skript v bashi

    7.11.2011 16:22 tgm126
    skript v bashi
    Přečteno: 851×
    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ákno • Nahoru

    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.