Portál AbcLinuxu, 28. prosince 2025 18:37
echo "Hodnota1=15;Hodnota2=30;Hodnota3=5" >> /home/graf/data/stat.datŘešení dotazu:
mv orig orig.old echo "new record" > orig cat orig.old >> orig rm orig.old
sed -i '1iHODNOTY' SUBOR
. 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.
sed: couldn't open temporary file ./sedGiiwXI: Permission deniedTakze 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.
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
less myslíte tail.
playsound=1Budu 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.
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.
param name= je skutočne choré (asi ako rakovina = množí sa a množí ...)
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
" pritom kdyby si srovnaly klady zapory mozna by jim nektera ze starsich technologii (moznosti) poslouzila lepe.
(fopen, mod => FRead (soubor, FileSize (soubor)) pameti aby zjistilo kolik ma radku, skocilo na posledni a vypsalo...
).
$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
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í
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.