raylib (Wikipedie), tj. multiplatformní open-source knihovna pro vývoj grafických aplikací a her, byla vydána ve verzi 6.0.
Nové verze AI modelů. Společnost OpenAI představila GPT‑5.5. Společnost DeepSeek představila DeepSeek V4.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 164 (pdf) a Hello World 29 (pdf).
Bylo oznámeno, že webový prohlížeč Opera GX zaměřený na hráče počítačových her je už také na Flathubu and Snapcraftu.
Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také
… více »Canonical vydal (email, blog, YouTube) Ubuntu 26.04 LTS Resolute Raccoon. Přehled novinek v poznámkách k vydání. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 11. vydání s dlouhodobou podporou (LTS).
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Gitea (Wikipedie) byla vydána v nové verzi 1.26.0. Přehled novinek v příspěvku na blogu.
Ve středu 29. dubna 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 7. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj i uživatelský prostor. Akce proběhne od 10:00 do večerních hodin. Hackday je určen všem zájemcům o praktickou práci s Linuxem na telefonech. Zaměří se na vývoj aplikací v userspace, například bankovní aplikace, zpracování obrazu z kamery nebo práci s NFC, i na úpravy
… více »LilyPond (Wikipedie) , tj. multiplatformní svobodný software určený pro sazbu notových zápisů, byl vydán ve verzi 2.26.0. Přehled novinek v aktualizované dokumentaci.
Byla vydána nová verze 11.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 237 vývojářů. Provedeno bylo více než 2 500 commitů. Přehled úprav a nových vlastností v seznamu změn.
1612800;37,17;22,67;0;0;52,38;23,25;0;0;73,74;22,78;0;0;37,02;20,4;98,49;0;2007-01-05 06:14:09 1641600;37,3;22,74;0;0;50,63;23,43;0;0;73,23;22,84;0;0;37,63;20,77;98,76;0;2007-01-05 14:14:09 1670400;37,58;22,71;0;0;49,57;23,48;0;0;72,1;22,79;0;0;38,33;20,48;99,16;0;2007-01-05 22:14:09 1699200;37,16;22,61;0;0;49,09;23,12;0;0;73,83;22,71;0;0;38,02;19,95;99,31;0;2007-01-06 06:14:09 1728000;36,9;22,58;0;0;49,07;22,97;0;0;73,88;22,66;0;0;38,16;19,73;99,39;0;2007-01-06 14:14:09 1756800;36,87;22,56;0;0;49,19;22,88;0;0;73,94;22,63;0;0;38,65;19,6;99,36;0;2007-01-06 22:14:09 1785600;36,87;22,54;0;0;49,28;22,81;0;0;73,97;22,61;0;0;38,93;19,5;99,06;0;2007-01-07 06:14:09 1814400;37,08;22,53;0;0;49,39;22,78;0;0;74,02;22,6;0;0;39,95;19,45;98,86;0;2007-01-07 14:14:09 1843200;37,27;22,53;0;0;49,42;22,78;0;0;74,03;22,59;0;0;40,03;19,43;99,17;0;2007-01-07 22:14:09 28800;37,35;22,63;0;0;49,83;22,94;0;0;73,66;22,67;0;0;38,99;20,11;98,9;0;2007-01-08 15:00:49Potřebuji získat něco takového:
1612800;37,17;22,67;0;0;52,38;23,25;0;0;73,74;22,78;0;0;37,02;20,4;98,49;0;20070105061409 1641600;37,3;22,74;0;0;50,63;23,43;0;0;73,23;22,84;0;0;37,63;20,77;98,76;0;20070105141409 1670400;37,58;22,71;0;0;49,57;23,48;0;0;72,1;22,79;0;0;38,33;20,48;99,16;0;20070105221409 1699200;37,16;22,61;0;0;49,09;23,12;0;0;73,83;22,71;0;0;38,02;19,95;99,31;0;20070106061409 1728000;36,9;22,58;0;0;49,07;22,97;0;0;73,88;22,66;0;0;38,16;19,73;99,39;0;20070106141409 1756800;36,87;22,56;0;0;49,19;22,88;0;0;73,94;22,63;0;0;38,65;19,6;99,36;0;20070106221409 1785600;36,87;22,54;0;0;49,28;22,81;0;0;73,97;22,61;0;0;38,93;19,5;99,06;0;20070107061409 1814400;37,08;22,53;0;0;49,39;22,78;0;0;74,02;22,6;0;0;39,95;19,45;98,86;0;20070107141409 1843200;37,27;22,53;0;0;49,42;22,78;0;0;74,03;22,59;0;0;40,03;19,43;99,17;0;20070107221409 28800;37,35;22,63;0;0;49,83;22,94;0;0;73,66;22,67;0;0;38,99;20,11;98,9;0;20070108150049Zatím používám toto, ale je to pomalé:
#!/bin/bash
awk 'BEGIN {
FS=";";
}
{
split($18, Z1, " ");
split(Z1[1], D, "-");
split(Z1[2], T, ":");
printf("%s;", $0);
printf("%s%s%s", D[1], D[2], D[3]);
printf("%s%s%s\n", T[1], T[2], T[3]);
}'
Pokud máte jistotu, že se v tom souboru ty znaky jinde vyskytnout nemohou (z ukázky to tak vypadá), nejjednodušší asi bude prohnat to přes
tr -d ' :-'
(Předpokládám, že chcete odstranit pomlčky (jak to máte v ukázce) a ne tečky (jak píšete v nadpisu).)
151200;-35,426429;23,785839;0,000000;0,000000;30,512638;23,847171;0,000000;0,000000;68,932240;23,730166;0,000000;0,000000;33,195928;-21,802709;98,254647;0,000000;2013-02-23 22:48:40 162000;35,408064;23,657363;0,000000;0,000000;-30,515696;23,728122;0,000000;0,000000;68,969240;23,623039;0,000000;0,000000;33,234408;-21,691139;-98,222001;0,000000;2013-02-24 01:48:40 172800;35,374079;23,559708;0,000000;0,000000;30,523148;23,623681;0,000000;0,000000;68,974715;23,525660;0,000000;0,000000;33,267497;21,602085;98,032074;0,000000;2013-02-24 04:48:40 183600;35,361032;23,466020;0,000000;0,000000;30,557975;23,524950;0,000000;0,000000;69,004485;23,435732;0,000000;0,000000;-33,318995;21,522748;98,042093;0,000000;2013-02-24 07:48:40Než jsem si to uvědomil, byl už soubor vložený.
Tak můžete zkusit třeba
sed -re 's/([0-9]+)-([0-9]+)-([0-9]+) ([0-9]+):([0-9]+):([0-9]+)$/\1\2\3\4\5\6/'
Ale asi to nebude nijak závratně rychlejší než ten awk.
[root@master ~]# time sed -re 's/([0-9]+)-([0-9]+)-([0-9]+) ([0-9]+):([0-9]+):([0-9]+)$/\1\2\3\4\5\6/' tmp2 > /dev/null
real 0m0.499s
user 0m0.490s
sys 0m0.000s
[root@master ~]# time awk 'BEGIN {
FS=";";
}
{
split($18, Z1, " ");
split(Z1[1], D, "-");
split(Z1[2], T, ":");
printf("%s;", $0);
printf("%s%s%s", D[1], D[2], D[3]);
printf("%s%s%s\n", T[1], T[2], T[3]);
}' tmp2 2&>1 > /dev/null
real 0m0.258s
user 0m0.254s
sys 0m0.004s
[root@master ~]# time awk -F';' '{{ OFS=";";gsub(/[- :]/, "", $NF) ;print}}' tmp2 > /dev/null
real 0m0.189s
user 0m0.188s
sys 0m0.001s
perl -nE 'my @row = split /;/; $row[-1] =~ y/ :-//d; print join q{;}, @row'
#!/bin/bash
awk 'BEGIN {
FS=";";
}
{
OFS=";";
gsub("[-: ]","",$18);
print;
}'
3. Perl: 9,6 s.
vybrat řádky od-do podle datumu a časuToto ten text umožňuje taky pomocí standardního porovnání řetězců, ne? Efektivní práci s časem (přičítání dnů, atd.), neumožňuje ani jedno.
Co třeba tohle? Není tam ale žádné ošetření chyb a celkem naivně to spoléhá, že sloupec s datem je ten poslední a že za sebou už nemá středník:
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::stringstream stream;
std::string line, last_field;
while (std::getline(std::cin, line)) {
stream.clear();
stream.str(line);
while (std::getline(stream, last_field, ';'));
std::cout << line.substr(0, line.size() - last_field.size());
for (char c : last_field) switch (c) {
case ' ':
case '-':
case ':':
break;
default:
std::cout << c;
}
std::cout << std::endl;
}
return 0;
}
Když tu věc spustím, třeba takhle, …
clang++ -Wall -Wextra --std=c++11 -march=native -O3 ./bla.c++ -o bla ./bla <<-BLA 1612800;37,17;22,67;0;0;52,38;23,25;0;0;73,74;22,78;0;0;37,02;20,4;98,49;0;2007-01-05 06:14:09 1641600;37,3;22,74;0;0;50,63;23,43;0;0;73,23;22,84;0;0;37,63;20,77;98,76;0;2007-01-05 14:14:09 1670400;37,58;22,71;0;0;49,57;23,48;0;0;72,1;22,79;0;0;38,33;20,48;99,16;0;2007-01-05 22:14:09 1699200;37,16;22,61;0;0;49,09;23,12;0;0;73,83;22,71;0;0;38,02;19,95;99,31;0;2007-01-06 06:14:09 1728000;36,9;22,58;0;0;49,07;22,97;0;0;73,88;22,66;0;0;38,16;19,73;99,39;0;2007-01-06 14:14:09 1756800;36,87;22,56;0;0;49,19;22,88;0;0;73,94;22,63;0;0;38,65;19,6;99,36;0;2007-01-06 22:14:09 1785600;36,87;22,54;0;0;49,28;22,81;0;0;73,97;22,61;0;0;38,93;19,5;99,06;0;2007-01-07 06:14:09 1814400;37,08;22,53;0;0;49,39;22,78;0;0;74,02;22,6;0;0;39,95;19,45;98,86;0;2007-01-07 14:14:09 1843200;37,27;22,53;0;0;49,42;22,78;0;0;74,03;22,59;0;0;40,03;19,43;99,17;0;2007-01-07 22:14:09 28800;37,35;22,63;0;0;49,83;22,94;0;0;73,66;22,67;0;0;38,99;20,11;98,9;0;2007-01-08 15:00:49 BLA
… dává mi to výstup:
1612800;37,17;22,67;0;0;52,38;23,25;0;0;73,74;22,78;0;0;37,02;20,4;98,49;0;20070105061409 1641600;37,3;22,74;0;0;50,63;23,43;0;0;73,23;22,84;0;0;37,63;20,77;98,76;0;20070105141409 1670400;37,58;22,71;0;0;49,57;23,48;0;0;72,1;22,79;0;0;38,33;20,48;99,16;0;20070105221409 1699200;37,16;22,61;0;0;49,09;23,12;0;0;73,83;22,71;0;0;38,02;19,95;99,31;0;20070106061409 1728000;36,9;22,58;0;0;49,07;22,97;0;0;73,88;22,66;0;0;38,16;19,73;99,39;0;20070106141409 1756800;36,87;22,56;0;0;49,19;22,88;0;0;73,94;22,63;0;0;38,65;19,6;99,36;0;20070106221409 1785600;36,87;22,54;0;0;49,28;22,81;0;0;73,97;22,61;0;0;38,93;19,5;99,06;0;20070107061409 1814400;37,08;22,53;0;0;49,39;22,78;0;0;74,02;22,6;0;0;39,95;19,45;98,86;0;20070107141409 1843200;37,27;22,53;0;0;49,42;22,78;0;0;74,03;22,59;0;0;40,03;19,43;99,17;0;20070107221409 28800;37,35;22,63;0;0;49,83;22,94;0;0;73,66;22,67;0;0;38,99;20,11;98,9;0;20070108150049
A to vypadá, že by to mohlo být ono. 
Ale opravdu je v awk nějaký problém s výkonem? Nevěřím, že by awk nemělo tohle rychleji. Ještě bys mohl použít tu druhou implementaci getline(), která dostane předem naalokovaný buffer pevné délky, a v tom bufferu pak vyzobávat znaky. Určitě tady kdekdo vymyslí z fleku klidně dalších pět optimatlizací. Jen je otázka, jestli to fakt stojí za to. 
A ještě se to dá vzít třeba klidně zezadu.
Koneckonců, proč ne.
#include <iostream>
#include <string>
int main() {
std::string line, last_field;
while (std::getline(std::cin, line)) {
last_field.clear();
size_t removed{0};
for (auto it = line.rbegin(); it != line.rend() && *it != ';'; ++it) {
switch (*it) {
case ' ':
case '-':
case ':':
++removed;
break;
default:
last_field += *it;
}
}
std::cout << line.substr(0, line.size() - last_field.size() - removed);
std::cout << std::string{last_field.rbegin(), last_field.rend()};
std::cout << std::endl;
}
return 0;
}
perl -i.bak -pE 'my @row = split /;/; $row[-1] =~ y/ :-//d; $_= join q{;}, @row;' input.txt
2700000;-32,513844;-24,360552;0,000000;0,000000;-27,325044;-24,370144;0,000000;0,000000;79,236248;24,215390;0,000000;0,000000;28,465076;22,663942;98,953721;0,000000;2013-03-25 10:48:40;20130325104840
(mawk: necelé 4 sekundy, počet řádků:194 000)
cat /tmp/t | tr '\n' '\t' | tr ';' '\n' | LC_CTYPE=C sed '/:/{s/[ :-]//g}' | tr '\n' ';' | tr '\t' '\n'
time LC_CTYPE=C awk -v FS=';' -v OFS=';' '{gsub("[ -:]", "", $(NF-1) )}1' /tmp/t >/dev/null
Tiskni
Sdílej: