abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 3
    dnes 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 14
    dnes 13:33 | Komunita

    Byla založena nadace Open Home Foundation zastřešující více než 240 projektů, standardů, ovladačů a knihoven (Home Assistant, ESPHome, Zigpy, Piper, Improv Wi-Fi, Wyoming, …) pro otevřenou chytrou domácnost s důrazem na soukromí, možnost výběru a udržitelnost.

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

    Společnost Meta otevírá svůj operační systém Meta Horizon OS pro headsety pro virtuální a rozšířenou realitu. Vedle Meta Quest se bude používat i v připravovaných headsetech od Asusu a Lenova.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | IT novinky

    Společnost Espressif (ESP8266, ESP32, …) získala většinový podíl ve společnosti M5Stack, čímž posiluje ekosystém AIoT.

    Ladislav Hagara | Komentářů: 0
    včera 23:44 | Nová verze

    Byla vydána nová stabilní verze 3.5 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). Přehled novinek také na YouTube. Nově lze využívat cloud (audio.com). Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

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

    50 let operačního systému CP/M, článek na webu Computer History Museum věnovaný operačnímu systému CP/M. Gary Kildall z Digital Research jej vytvořil v roce 1974.

    Ladislav Hagara | Komentářů: 2
    včera 16:22 | Pozvánky

    Byl zveřejněn program a spuštěna registrace na letošní konferenci Prague PostgreSQL Developer Day, která se koná 4. a 5. června. Na programu jsou 4 workshopy a 8 přednášek na různá témata o PostgreSQL, od konfigurace a zálohování po využití pro AI a vector search. Stejně jako v předchozích letech se konference koná v prostorách FIT ČVUT v Praze.

    TomasVondra | Komentářů: 0
    včera 03:00 | IT novinky

    Po 48 letech Zilog končí s výrobou 8bitového mikroprocesoru Zilog Z80 (Z84C00 Z80). Mikroprocesor byl uveden na trh v červenci 1976. Poslední objednávky jsou přijímány do 14. června [pdf].

    Ladislav Hagara | Komentářů: 6
    včera 02:00 | IT novinky

    Ještě letos vyjde Kingdom Come: Deliverance II (YouTube), pokračování počítačové hry Kingdom Come: Deliverance (Wikipedie, ProtonDB Gold).

    Ladislav Hagara | Komentářů: 13
    KDE Plasma 6
     (72%)
     (10%)
     (2%)
     (17%)
    Celkem 695 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: BASH: Jak připsat údaj na začátek souboru?

    13.12.2010 19:34 Honza
    BASH: Jak připsat údaj na začátek souboru?
    Přečteno: 1698×
    Zdravím, chtěl bych se zeptat jestli někdo nevíte jak v BASH skriptu připsat údaj na začátek souboru. Tvořím něco jako souborovou databázi a potřeboval bych aby údaj, který se má zapsat, zapsal na první řádek. Něco jako:

    echo "Hodnota1=15;Hodnota2=30;Hodnota3=5" >> /home/graf/data/stat.dat
    Jenže tohle připíše na konec souboru jde nějak lehce a efektivně zapisovat na začátek do první řádky a zbytek dat "jakoby posunout" dále? Děkuji.

    Řešení dotazu:


    Odpovědi

    David Watzke avatar 13.12.2010 19:40 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    No jde to snadno, ale je to chlívárna, protože tím víc fragmentuješ diskovej oddíl.
    mv orig orig.old
    echo "new record" > orig
    cat orig.old >> orig
    rm orig.old
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    13.12.2010 19:50 deadmail
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    a co tak sed?

    sed -i '1iHODNOTY' SUBOR
    13.12.2010 20:10 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Skvely diky moc to je ono :-). Ten postup s kopirovanim a znovu vkladanim me napadl ale po delší dobe bude soubor dost velky a tahle operace by se dělala pro vice databazi a bylo by to časem naročne. Díky moc ten sed sem neznal.
    David Watzke avatar 13.12.2010 20:14 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Použití sedu je sice lepší, ale náročný to bude taky a furt platí to, co jsem psal já. Ostatně si to zkus na větší soubor...
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    13.12.2010 21:18 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Sed pri -i robi presne to, co ti rozpisal hore kolega do viacerych prikazov.

    This option specifies that files are to be edited in-place. GNU `sed' does this by creating a temporary file and sending output to this file rather than to the standard output. When the end of the file is reached, the temporary file is renamed to the output file's original name.

    Daj robit sedu nejaku narocnejsiu pracu na vacsom subore a sleduj *.tmp subory v aktualnom adresari, ktore sa na zaver presunu na povodne miesto. Skus si to v adreari, kde nemas pravo zapisu a uvidis nieco ako:
    sed: couldn't open temporary file ./sedGiiwXI: Permission denied
    Takze rychlostne si nijak nepomozes. Mozes skusit si nechavat na zaciatku suboru hlavicku ukazujucu na offset v subore, kde zacinaju skutocne data a medzi hlavickou a datami bude volny priestor, ktory sa bude postupne zaplnat a patricne aktualizovat hlavicka. Az sa zaplni cely, tak subor presypes do noveho a zase vyrobit volne miesto. Cim budes kopirovat obsah iba raz za cas.
    If you hold a Unix shell up to your ear, you can you hear the C.
    13.12.2010 23:28 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Ok diky za informaci - jsem zas chytrejsi. Ale radeji zustanu u toho sice "krkolomensiho" presunu souboru (sed) kde to zatizi server pri pripisu nez kdyz se pak bude nacitat pres web rozhrani statistiky z techto databazi a pruchody by byli pomalejsi - resp bude to potrebovat vzdy jen prvni radek pokud budou pripisy na zacatek souboru neprochazi se cely file).
    14.12.2010 21:29 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?

    Ahoj.

    A co tak misto sedem na zacatek to zapisovat normalne na konec a lessem si vypsat jen posledni radek? Volani "neceho ze systemu" to je tak jako tak a rekl bych, ze less -n 1bude podstatne rychlejsi, nez sed -i.

    Dejv

    Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
    14.12.2010 21:36 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Předpokládám, že místo less myslíte tail.
    13.12.2010 21:16 jekub
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    a nebylo by lepsi jednoduse pridavat data na konec a k souboru (soborum) pak pristupovat od konce?
    David Watzke avatar 13.12.2010 23:58 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Ještě lepší by bylo použít databázi...
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    14.12.2010 00:04 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    prosim databazi jako takovou opravdu ne, znam jeji vyhody a nevyhody a v tomto pripade kdy se o tu souborovou databazi lehce postara system (linux) bude vyhodnejsi. Take sem o tom uvazoval a vyhrala to souborova databaze. Ale jinak dekuji
    rADOn avatar 14.12.2010 16:11 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Nedej se. Tahleta moda cpat vsechno do databazi stejne casem prejde.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    Pavel Stárek avatar 14.12.2010 16:26 Pavel Stárek | skóre: 44 | blog: Tady bloguju já :-) | Kolín
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Copak databáze, to by ještě šlo, ale ty pitomé XML soubory to je zážitek. Místo třeba settings.ini:
    playsound=1
    
    Budu mít settings.xml:
    <?xml version="1.0" encoding="UTF-8"?>
      <settings>
        <param name="playsound">1</param>
      </settings>
    
    Takže oproti 12 bajtům, takovej bastl + xml parser v aplikaci.
    Kdo chce, hledá způsob; kdo nechce, hledá důvod.
    14.12.2010 16:46 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?

    No hrůza… Tedy až na to, že ten XML parser vlastně není v aplikaci ale v knihovně a že v okamžiku, kdy se v budoucnu zkomplikuje struktura toho konfiguračního souboru, bude XML najednou jednodušší, přehlednější a hlavně snáze parsovatelné než ten původně jednoduchý konfigurační soubor.

    Tím samozřejmě nechci tvrdit, že má být všechno v XML. Ale stejně tak nepovažuji za správné šmahem odsoudit konfiguraci v XML jako apriorní nesmysl.

    14.12.2010 17:23 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    ono je to skôr o návrhu toho xml. param name= je skutočne choré (asi ako rakovina = množí sa a množí ...) :-)
    14.12.2010 17:46 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Pokial sa v name moze vyskytnut hocijaky retazec a zaroven mas par elementov, ktore tvoria kostru toho XML a nemozu sa vyskytnut kdekolvek len tak, tak skoncis pri <param name="nazov"

    Nestaci si len precitat jeden clanok na webe, ktory to odsudzuje a vztiahnut to na cely svet.

    Sam som nedavno v praci pisal program, ktory uzivatel bude krmit konfigurakom so stromovymi datami a v podstate s lubovolnymi nazvami. Inak ako param name="..." si neporadis a bez XML by som si tak akurat musel vymysliet vlastny hierarchicky format, parser na neho a uzivatel by ho pisal iba v nejakom obecnom editore. Takto mam format standardizovany, nemusim k nemu pisat dokumentaciu popisujucu kazdy znak, staci to oznacit za XML a dodat k tomu XSD. Parserov je dost, user si moze zohnat XML editor a editovat to kulturne.

    Cim ale nevravim, ze v pripadoch, kde je struktura dat plocha a moznosti su dopredu zname nie je napr. INI format vhodnejsi a uspornejsi.
    If you hold a Unix shell up to your ear, you can you hear the C.
    14.12.2010 18:49 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Heh docela se rozrostla debata o ukladani dat a nastaveni, co se tyče programů co občas v Delhpi delam (ja vim dinosaur :-D ale na to C# furt ne a ne zvyknout i to XML tomu moc nepomaha), tak tam sem vzdycky delal ini soubory vyjimecne registry. A ohledne ukladani dat v dotazu sem vybral souborovou databazi proto, protoze do toho lehce vlozi data system (linux) jednim radkem kodu (echo "..." >> nebo sed ..) a jsou udaje v databazi. Takhle jednoduse a rychle by to do normalni databazky neslo - navic server ma mensi naroky takhle by musel mit web server s php a databazi ted si vystacim jen s web serverem s php - navic kdyz spadne normalni databaze bezne rychle se na data co potrebujete nepodivate - v té souborové databazi vyčtu nejporebnejsi (ty posledni) udaje behem dvou klinuti a otevreni v notepad/lister/less/vi/atd... Kazdopadne nove technologie shomaždovani dat (databaze, settings XML) nezavrhuju, jen mi prijde ze nekdo je pouziva uplne bez rozmyslu jen proto ze je to ted "in", ze to vsichni pouzivaj a protoze je to skoro jako "apple :-D" pritom kdyby si srovnaly klady zapory mozna by jim nektera ze starsich technologii (moznosti) poslouzila lepe. ;-)
    rADOn avatar 14.12.2010 19:06 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    +1

    Pro XML jsou rozumny duvody, ale je jich malo. Vetsina lidi to pouziva z lenosti.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    14.12.2010 00:01 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    No ja si klidně necham poradit a nechci aby to vypadalo jako ze chci zalozit flame to opravdu ne ale pokud by nekdo byl hodny a poradil co bude efektivnejsi tak budu rad. jsou jen dve moznosti:
    1)tu kterou sem tu nastinil - to jest aktualni data (mala do 1kb) se na serveru přičtou do souborove databaze na začatek - např zminovany sed. Tu databazi pak prochazi web server s PHP kdy potřebuju do tabulky (kterou generuju na zaklade dat v databazi) vepsat posledni udaj v databazi - ten je v tomto pripade na prvnim radku v databaze
    2)druha moznost - mala aktualni data (1kb) se prictou lehce do databaze na konec souboru. web server s PHP potrebuje sahnout do databaze vzdy pro posledni (aktualni) data (takze na konec v tomto pripade).

    No a mam pocit (nerikam ze spravny), ze bude toto reseni 1 rychlejsi protoze to PHP nebude muset natahnout cely soubor databaze do (fopen, mod => FRead (soubor, FileSize (soubor)) pameti aby zjistilo kolik ma radku, skocilo na posledni a vypsalo...
    Aleš Janda avatar 14.12.2010 00:16 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Pokud tušíš, jak ten řádek bude max. dlouhý, můžeš se FSeek()nout někam ke konci, přečíst ten zbytek, vybrat poslední řádek a je to. Zapisovat něco na začátek a kopírovat pořád celý soubor se mi zdá strašné řešení.
    14.12.2010 06:59 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Zalezi, co je "kriticka" operacia, ci pridavanie zaznamov alebo citanie toho jedneho inkriminovaneho. A ak je treba skutocne iba jeden posledne pridany subor [a citanie je kriticke], preco ho nedrzat v samostatnom subore?
    14.12.2010 09:36 kuka
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    No asi tak, zapis to do toho "databazoveho" souboru nakonec a jeste do jineho souboru, kde je pouze ten posledni radek a prepisuje se.
    14.12.2010 10:41 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    ahooj diky vsem za navrhy a popisu jeste trochu vic co se s tou databazkou deje. S tim souborem pracujou asi 2 tabulky pričemž jedna tabulka pracuje jen a pouze s poslednim zaznamem (tim aktualnim) a druha by pak prochazela celym souborem - ta se ovšem nebude bežně použivat až v připadě problemu nebo archivaci databaze (udaje starši mesice se odpoji vloži do samostatneho souboru a zaarchivuji - tudis ta hlavni pouzivana databaze nebude nikdy nekonecna resp mela by si hlidat rozumnou (vyuzitelnou) velikost) Takze ta myslenka nejprve precist aktualni udaj a pak to pripojit me napadla ale pri tom pouziti by pak nebyla videt v druhe tabulce jeslti vam to pomuze muzu hodit link na web kde to tvorim (pokud nezkritizujete vsechno od grafiky po tabulky :-D).
    14.12.2010 11:06 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Co myslíš těmi "tabulkami"? Nemělo to spíš být skripty?
    14.12.2010 12:08 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    jsou to php skripty ktere na zaklade dat v souboru tvori tabulku - tohle je skript ktery šahá po poslednich datech v souboru:

    $p = 0;					//counter na 0
    $slozka = dir("./data");			//urceni slozky s databazema
    while($soubor=$slozka->read()) {		//cyklus dokud neprojde celou slozku
      if ($soubor=="." || $soubor=="..") continue;	//vynecha na zacatku cyklu radky "." a ".."
    	$soubor = explode(".", $soubor);	//roseka string soubor.pripona na soubor
    	$seznam_souboru[$p] = $soubor[0];	//a ulozi do pole seznam_souboru
    	$p++;					//pricte counter
    }
    $slozka->close();				//zavre slozku
    
    ... ted nasledujou html tagy a v html zacatek deklarace tabulky ktera pokracuje generovanim jejiho obsahu pomoci php...
    for ($p = 0; $p < count($seznam_souboru); ++$p){
    
      $soubor = fopen("./data/$seznam_souboru[$p].txt","r"); 
      $nalezeno = false;
      while(!$nalezeno && !feof($soubor)) { 
        $data = explode(";", fgets($soubor));
        $nalezeno = true;		//v pripade hledani (ted deakt.)
      }
    
    echo "tr
                td".$seznam_souboru[$p]."/td
    	    td".$data[1]."/td
                td".$data[2]."/td
                td".$data[3]."/td
                td".$data[4]."/td
                td".$data[5]."/td
                td".$data[6]."/td
                td".$data[7]."/td
                td".$data[8]."/td
                td".$data[9]."/td
                td".$data[10]."/td
           tr";
    }
    
    znacky <> jsem u tr a td musel odstranit pac se mi tu nechteli zobrazit (kdyz formatuju tagem < pre > ) A ta druha tabulka bude generovana obdobne akorat bude prochazet cely soubor a hledat + počitat nektere udaje. Díky moc snad tohle pomuže
    14.12.2010 11:55 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Kuka ti radi zapisovat zaznam sucasne do oboch suborov. Do jednoho apendovat na koniec, ten bude stale narastat, ale bude drzat vsetky zaznamy (pre tabulku/skript 2). Druhy subor sa prepisuje, ma stale velkost jedineho zaznamu a pracuje s nim tabulka/skript 1.
    If you hold a Unix shell up to your ear, you can you hear the C.
    14.12.2010 13:12 Honza
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    jop to by nemuselo byt spatny, jeden soubor navic me nezabije a pristup k potrebnym datum bude rychly - od podrobneho prohledavni X databazovych souboru nikdo nepocita bleskovou reakci (ale u aktialnich a dulezitych udaju jo)
    15.12.2010 17:27 František Bublík | skóre: 16
    Rozbalit Rozbalit vše Re: BASH: Jak připsat údaj na začátek souboru?
    Zdar,

    miluju jednoduchá řešení. Proto bych zapisoval normálně pomocí např "echo text >>" na konec souboru. Pro výpis souboru bych pak do roury předřadil "tac" je to ekvivalent "cat"u, ale vypisuje řádky v opačném pořadí - takže poslední řádek = první :-).

    15.12.2010 08:40 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
    Rozbalit Rozbalit vše sqlite3
    No taky existuje souborová databáze sqlite. Jestli to neznáš mrkni na to.
    15.12.2010 13:00 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: sqlite3
    Sqlite je asi tak suborova, ako Mysql. Obe maju datove subory, v ktorych maju data vo vlastnom formate. Vacsina beznych DB je suborova. Vynimka su tak akurat molochy ako napr. Teradata, kde uz s anehra na nejaky obecny fs, ale DB pristupuje rovno k disku a organizaciu sektorov si riesi sama. Ale bezny linuxovy pouzivatel sa s nimi velmi nestretava.
    If you hold a Unix shell up to your ear, you can you hear the C.
    15.12.2010 18:22 kuka
    Rozbalit Rozbalit vše Re: sqlite3
    Pisatel mel asi na mysli, ze celou databazi sqlite tvori jeden soubor a extremne jednoduse se pouziva, nema konfiguraci, je velmi nenarocna na zdroje atd. Pokud bylo duvodem nepouziti databaze ze je to pro tento pripad kanon na vrabce, jak jsem pochopil z prispevku vyse, tak sqlite by mohlo prave pro svou jednoduchost stat za uvahu.
    rADOn avatar 17.12.2010 14:03 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: sqlite3
    Berkeley DB a klony je jeste jednodussi a pokud clovek nepotrebuje SQL casto i lepsi.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    17.12.2010 20:11 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: sqlite3
    Ale zavislosti aplikacii na tej-ktorej verzii Berkeley DB su peklo.

    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.