Národní identitní autorita, tedy NIA ID, MeG a eOP jsou nedostupné. Na nápravě se pracuje [𝕏].
Americký výrobce čipů Nvidia se stal první firmou na světě, jejíž tržní hodnota dosáhla pěti bilionů USD (104,5 bilionu Kč). Nvidia stojí v čele světového trhu s čipy pro umělou inteligenci (AI) a výrazně těží z prudkého růstu zájmu o tuto technologii. Nvidia již byla první firmou, která překonala hranici čtyř bilionů USD, a to letos v červenci.
Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).
TrueNAS (Wikipedie), tj. open source storage platforma postavená na Linuxu, byl vydán ve verzi 25.10 Goldeye. Přináší NVMe over Fabric (NVMe-oF) nebo OpenZFS 2.3.4.
Byla vydána OpenIndiana 2025.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).
České základní a střední školy čelí alarmujícímu stavu kybernetické bezpečnosti. Až 89 % identifikovaných zranitelností v IT infrastruktuře vzdělávacích institucí dosahuje kritické úrovně, což znamená, že útočníci mohou vzdáleně převzít kontrolu nad klíčovými systémy. Školy navíc často provozují zastaralé technologie, i roky nechávají zařízení bez potřebných aktualizací softwaru a používají k nim pouze výchozí, všeobecně známá
… více »Během tradiční ceremonie k oslavě Dne vzniku samostatného československého státu (28. října) byl vyznamenán medailí Za zásluhy (o stát v oblasti hospodářské) vývojář 3D tiskáren Josef Průša. Letos byly uděleny pouze dvě medaile Za zásluhy o stát v oblasti hospodářské, druhou dostal informatik a manažer Ondřej Felix, který se zabývá digitalizací státní správy.
Tor Browser, tj. fork webového prohlížeče Mozilla Firefox s integrovaným klientem sítě Tor přednastavený tak, aby přes tuto síť bezpečně komunikoval, byl vydán ve verzi 15.0. Postaven je na Firefoxu ESR 140.
Bylo oznámeno (cs) vydání Fedora Linuxu 43. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách Fedora Magazinu: Fedora Workstation, Fedora KDE Plasma Desktop, Fedora Silverblue a Fedora Atomic Desktops.
Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.
Předem upozorňuju, že se GNU stream editor (GNU sed, dále jen sed) teprve učím. Najdete zde pro mě důležité poznámky týkající se tohoto programu. Tyto poznámky pochopitelně může využít kdokoli. Poznámka: Vím, že na Internetu existuje spousta materiálů k sedu. Já tyto moje poznámky píšu hlavně, protože se mi mnou psaný text lépe pamatuje.
Sed slouží k filtraci/transformaci textu vstupního "proudu". Pod pojmem proud si představte (textový) soubor nebo rouru.
Nejčastěji se používá pro filtrování (transformaci) textu z roury. Tedy konstrukce typu program1 | sed...
Pokud chete použít sed, tak máte dvě možnosti:
sed SKRIPT VSTUPNI_SOUBORY...
sed VOLBY... [SKRIPT] [VSTUPNI_SOUBORY...]
sed program se skládá z jednoho nebo více sed příkazů, které vkládáme pomocí volby -e (--expression) nebo pomocí -f (--file). Tyto volby lze použít vícekrát, tedy lze vložit více příkazů. Sed považuje za příkaz i první argument následující za poslední volbou v případě, že se nepoužije ani volba -e, ani -f, resp. ani jejich dlouhé varianty. A všem příkazům dohromady se říká SKRIPT.
[ADRESA1[,ADRESA2]]prikaz [ARGUMENTY]
Adresa může být vyjádřena následujicími způsoby:
\%REGULARNI_VYRAZ% řádka musí odpovídat regulárnímu výrazu REGULARNI_VYRAZ. '%' můžete nahradit jedním znakem dle vašeho výběru, slouží jako oddělovač (pokud se má vyskytovat v regulárním výrazu, tak mu musí předcházet znak '\')./REGULARNI_VYRAZ/ řádka musí odpovídat regulárnímu vyrazu REGULARNI_VYRAZ. Pokud "REGULARNI_VYRAZ" má obsahovat znak '/', musí mu předcházet znak '\'.CISLO odpovídá řádce s číslem CISLO.\%REGULARNI_VYRAZ%I nebo /REGULARNI_VYRAZ/I sed nebude rozlišovat velikost písmen, jinak viz výše.$ odpovídá poslední řádce posledního vstupního souboru.Rozšíření GNU:
PRVNI~KROK sed vybere každou KROK-tou řádku, počínaje řádkem PRVNI.
ADRESA1,ADRESA2 takto můžete specifikovat "interval" -- jsou to všechny řádky mezi první řádkou odpovídající ADRESA1 a řádkou odpovídající ADRESA2 (včetně).
Ještě pár speciálních možností (jedná se o GNU rozšíření):
0,/REGULARNI_VYRAZ/ aby sed bral v potaz i první řádku, když řádky porovnává s REGULARNI_VYRAZ.ADRESA1,+C Vybere řádek odpovídající ADRESA1 a C řádků za ním následujících.ADRESA1,~C vybere řádek odpovídající ADRESA1 a řádky následující ADRESA1, dokud nenarazí ná řádek, jehož číslo je násobkem C.Vychytávkou je použití znaku '!' ve specifikaci adresy. Pokud tento znak připojíme na konec specifikace adresy, potom budou vybrány pouze řádky, které neodpovídají specifikaci adresy (rozsahu). Tzn. je to taková negace.
s (substitute)
Syntaxe: s/REGULARNI_VYRAZ/CIM_NAHRADIT/VOLBY
Poznámka: znak '/' může být nahrazen jiným znakem, např. s@REGULARNI_VYRAZ@CIM_NAHRADIT@VOLBY (zaměnili jsme znak '/' za '@'. Pokud se znak '/' má vyskytnout v REGULARNI_VYRAZ nebo v CIM_NAHRADIT, musí mu předcházet znak '\'. Pokud znak '/' nahradíme jiným, postupuje se obdobně.
Jak název (substitute) napovídá, jedná se o příkaz sedu, který při každém průchodu modifikuje pattern space (viz výše) tak, že nahradí výraz odpovídající REGULARNI_VYRAZ za CIM_NAHRADIT.
Vychytávkou je, že v CIM_NAHRADIT se můžeme odkazovat pomocí \C na C-tý zapamatovaný řetězec (C je přirozené číslo od 1 do 9), viz \(REGULARNI_VYRAZ\). V angličtině se tomu říká "back reference".
Další vychytávkou je to, že pokud umístíme do CIM_NAHRADIT znak '&', tak je odkazem na celý řetězec odpovídající REGULARNI_VYRAZ.
sPříkaz s může být následován těmito volbami:
g aplikuj CIM_NAHRADIT na všechny výskyty řetězce, ne jenom na první.CISLO nahraď pouze CISLO-tý řetězec odpovídajcí REGULARNI_VYRAZ.p pokud došlo k nahrazení (substituci), vytiskne sed "nový" pattern space.w NAZEV-SOUBORU pokud došlo k substituci, zapíše sed výsledek do NAZEV-SOUBORU. Lze použít dva speciální soubory (GNU rozšíření), a to /dev/stdout (standardní výstup) a /dev/stderr (standardní chybový výstup).
e Pokud došlo k substituci, tak příkaz (program), který se nachází v pattern space je vykonán a pattern space je nahrazen jeho výstupem. Znak konce řádku je potlačen. Jedná se o rozšíření GNU.I sed nebude rozlišovat velikost písmen. (GNU rozšíření)d smaže obsah pattern space, okamžitě dojde k další obrátce cyklu.p vytiskne obsah pattern space na standardní výstup. Používá se většinou s volbou '-n' (ta potlačí vytisknutí pattern space na konci každého cyklu).q [NAVRATOVY-KOD] sed bude ukončen s návratovým kódem NAVRATOVY-KOD bez zpracování jakýchkoli dalších příkazů nebo vstupu. Aktuální pattern space je vytisknut, pokud nebyla použita volba -n. Schopnost navrátit návratový kód je GNU rozšíření.n Pokud nebylo zakázáno automatické tisknutí pattern space, tak vytiskne pattern space. Potom nahradí pattern space další řádkou vstupu. Pokud už není žádný vstup, sed skončí bez zpracování dalších příkazů.{ PRIKAZY } konstrukce k vytvoření skupiny příkazů. Příkazy se od sebe oddělují pomocí znaku ';' (středník). Jeden středník musí být i před '}'Takto jsem teoreticky vysvětlil pro mě nejdůležitější vlastnosti programu sed. Pokud vám chybí nějaké praktické příklady, tak zadejte do určitého vyhledávače např. "sed examples". Dále jsem vynechal výklad regulárních výrazů, protože je docela dobře znám. Případný zájemce ale najde na Internetu dostatek materiálů věnujících se regulárním výrazům.
Tiskni
Sdílej:
t [label] - skočí na label (nebo na konec, když label chybí), pokud byla poslední substituce úspěšná. To se hodí když např. chci ze souboru ostranit nějaké řádky podle nějakého regexpu:
sed -n 's/...//;t;p;'
Abych se přiznal, tak zrovna tenhle příkaz mi není moc jasný. Teprve až ho pochopím, tak ho určitě přidám. Jinak díky.
sed -ne 's/...//;t;p;' zrovna není štastný příklad, protože téhož asi raději dosáhneme čitelnějším: sed -e '/.../d'. Ale jsou situace, kdy se hodí. b je prostý skok, t skok podmíněný (nahrazení s proběhlo od začátku zpracování toho řádku). Do téhle kategorie patří i "hold space" (g, G, h, H, x) a možnost spojovat řádky na vstupu (N).
Pravdou nicméně je, že když na tyto prostředky dojde, možná je na čase zvážit jiný nástroj (třeba awk). sed sice mnoho dokáže, ale složitější konstrukce se dle mého špatně čtou. Takže pro pobavení/potěšení stojí za to zkusit čistě sed řešení problému, ale nemusí to být nutně řešení nejpraktičtější.
Čeho bych se raději vyvaroval (prostě je to nepěkná forma (a trochu plýtvání prostředky) jsou pekelné roury tak časté v mnoha skriptech: grep ... | awk ... | sed ... | grep -v ... | tr ... | ... v libovolných sekvencích a opakováních. Všechny tyto úkony je lépe svěřit jednomu sed nebo awk skriptu.
Pokud máte rád knihy a hezky utříděné informace: <http://oreilly.com/catalog/9781565922259>.
Díky
Čeho bych se raději vyvaroval (prostě je to nepěkná forma (a trochu plýtvání prostředky) jsou pekelné roury tak časté v mnoha skriptech: grep ... | awk ... | sed ... | grep -v ... | tr ... | ... v libovolných sekvencích a opakováních. Všechny tyto úkony je lépe svěřit jednomu sed nebo awk skriptu.Z hlediska výkonu souhlas – ale co se týče přehlednosti, tak IMHO bude většinou vycházet líp, rozdělit to na víc menších srozumitelných částí, než jeden ultimátní skript. Jasně, dá se okomentovat, ale pokud to někdo píše na jednu řádku, tak mi přijdou přehlednější ty roury.
Hezká ukázka toho, jak může být sed užitečný (nastavení dynamického linkeru, který má gcc používat).
sed nepoužívá specifický druh regexpů, to spíš Perl má svoje rozšířeníTak tak, ale PCRE ma "hezci" syntaxi. Obvykle musim v sedu psat spoustu zpetnych lomitek v regexpech. Navic, kdyz uz umim perl, da se pouzit jako grep, sed, awk a neco navic (ikdyz awk toho umi taky dost).
Obvykle musim v sedu psat spoustu zpetnych lomitek v regexpech.
Protože z historických důvodů používá Basic RE. U GNU sedu to řeší přepínač -r
Děkuju za ocenění.
Jojo, já taky, ale poděl je, že zruší symlink a udělá z něj normální soubor. Řešením by mělo být --follow-symlinks.To bych neviděl jako problém :), ale proti --follow-symlinks nic nemám.
--follow-symlinks pochopitelně neobsahuje a gnu nástroje mají být (afaik) nadmnožinou standardu, takže odtud takovéhle podivnosti. Je bohužel mnohem jednoduší přidat si vlastní extension než snažit se pohnout se standardem, ačkoli by to bylo v tomhle i mnoha dalších případech lepší.
To je imho kvůli standardu. Standard nic jako --follow-symlinks pochopitelně neobsahuje a gnu nástroje mají být (afaik) nadmnožinou standardu,
Požadavek, aby implementace byla nadmnožinou standardu, nijak nebrání tomu, aby si přidala další přepínače, které POSIX nepožaduje - což je ostatně i samotný -i (přesněji: všechny kromě -e, -f a -n).
-i je GNU rozšířením, nelze default vysvětlovat POSIXem, ale jen zpětnou kompatibilitou.
-i není posix, no tak to je potom ještě blbější výmluva...
Je to docela problém, když máš třeba vhosty apache v /etc/apache2/sites-available a v sites-enabled pouze odkazy na ty povolený a pak se rozhodneš in-place editovat soubor přes symlink...Stačí nelézt, kam nemáš :).
Podle mě by --follow-symlinks měla být implicitní volba.Podle mě spíše ne. Mám radši, když nástroje dělají přesně to, co jim řeknu.
Ale důležitý je hlavně o tomto vědět, pak si na to člověk dá bacha.Tak.
Mám radši, když nástroje dělají přesně to, co jim řeknu.No právě – proto bych tady spíš čekal, že dojde k úpravě souboru (ne navíc ke smazání odkazu a uložení obyčejného souboru místo něj). Argument s kompatibilitou beru – ale logičtější by to bylo takhle.
o právě – proto bych tady spíš čekal, že dojde k úpravě souboru (ne navíc ke smazání odkazu a uložení obyčejného souboru místo něj). Argument s kompatibilitou beru – ale logičtější by to bylo takhle.Mno mě to přijde logičtější naopak. Protože kdyby sed tu volbu neměl, soubor bych si přejmenoval, dal ho sedu na vstupu a výstupu dal jeho původní jméno. Měl bych tedy stejný výsledek, jako má sed -i, proto mi to přijde přirozenější.
A nejde jenom o editory – ty symbolické odkazy respektuje prakticky každý program – nebo když do toho odkazu nasměruji standardní výstup (třeba příkazu echo ahoj), tak se taky zapíše skrze odkaz do cílového souboru – nepřepíše se ten odkaz obyčejným souborem.
Navíc sed zachovává přístupová práva – taky proto bych čekal, že zachová symbolický odkaz.
Zajímavě se to chová taky při použití pevných odkazů:
$ echo 111 > soubor1.txt $ ln soubor1.txt soubor2.txt $ sed -i s/1/2/g soubor2.txt $ cat soubor2.txt 222 $ cat soubor1.txt 111Opět to původní soubor smaže a vytvoří úplně nový – místo aby to editoval „na místě“ v tom stejném souboru. Beru to prostě jako záludnost, na kterou je potřeba si dávat pozor, nějakou logiku v tom ale nevidím (kromě té snahy o kompatibilitu, což už jsem tu psal).
Navíc sed zachovává přístupová práva – taky proto bych čekal, že zachová symbolický odkaz.Navrácení přístupových práv je bezpečné, u toho následování linků si tak jistý nejsem.
Opět to původní soubor smaže a vytvoří úplně nový – místo aby to editoval „na místě“ v tom stejném souboru.On sed je proudový, takže by bylo dost zvláštní, kdyby něco editoval opravdu na místě.
Beru to prostě jako záludnost, na kterou je potřeba si dávat pozor, nějakou logiku v tom ale nevidím (kromě té snahy o kompatibilitu, což už jsem tu psal).Kompatibilita je pouze zachvávání určitého stavu, ne jeho vytváření :).
Jednou je to stream editor, tak je to stream editorTak tak, nikoli file editor
:p
Nadruhou stranu souhasím, že když in-place, tak teda in-place, čili jako každá jiná slušná utilita...
Jojo, já taky, ale poděl je, že zruší symlink a udělá z něj normální soubor. Řešením by mělo být --follow-symlinks.Nebo použít
ed. Poštvat ho na daný soubor k editaci a instrukce mu nakrmit na standardní vstup (třeba pomocí here documents) ;)
Díky