CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.
Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.
Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.
Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.
Google na včerejší akci The Android Show | I/O Edition 2026 (YouTube) představil celou řadu novinek: Gemini Intelligence, notebooky Googlebook, novou generaci Android Auto, …
), kdybych se někdy dostal k systému kde grep volbu -o nepodporuje.
Malý příklad, mám soubor test.txt, který obsahuje:
bla <a href="bla">bla</a> bla <a href="bla">bla</a> <a href="bla">bla</a> bla <a href="bla">bla</a> bla <a href="bla">bla</a>Chci vypsat všechny odkazy v něm (tedy adresy, to je jedno). S použitím grep -o je to jednoduché:
[mikos@tauri ~]$ grep -o '<a [^>]*>' test.txt <a href="bla"> <a href="bla"> <a href="bla"> <a href="bla"> <a href="bla">Ovšem jak na to se sedem? Zkoušel jsem toto:
[mikos@tauri ~]$ sed -n 's/.*\(<a [^>]*>\).*/\1/gp' test.txt <a href="bla"> <a href="bla"> <a href="bla">Jenže jak je vidět, to vypíše pouze jeden výskyt odkazu na řádku, jelikož ona .* sežere ty ostatní výskyty. Je tu nějaký sed-guru, který by poradil co s tím?
Upozorňuju, že to s těmi odkazy je jen příklad, jde mi prostě o obecnou náhradu za grep -o (fungující naprosto stejně jako grep -o, tedy nestojím o žádné hacky jen pro konkrétní příklad).
Prostě chci sed, a to pokud možno jednoduše (viděl jsem už řešení, ale byl to ošklivý sed skript na několik řádek, to nechci).
Neexistuje v sedu prostě příkaz jako "vypiš pouze matching regexp"? Print (tedy 'p') vypisuje celý řádek co jsem tak zkoušel
david@amd64 ~ $ cat lol bla <a href="bla">bla</a> bla <a href="bla">bla</a> <a href="bla">bla</a> bla <a href="bla">bla</a> bla <a href="bla">bla</a> david@amd64 ~ $ sed -e 's/.*\(<a [^>]*>\).*/\1/gp' lol <a href="bla"> <a href="bla"> <a href="bla"> <a href="bla"> <a href="bla"> <a href="bla">
sed -e '/<a/ s/.*\(<a [^>]*>\).*/\1/gp' lolvyhledává to jen řádky s "
<a" a vyjde to prý mnohem rychleji.
Jen doufam že se nějaké skutečné řešení najde (hlavně jednoduché... jak říkam už jsem řešení viděl, ale to byl sed skript na několik řádek a o to fakt nestojim).
john@turion ~ $ cat test <a href="1"> xxx <a href="2"> dsjhfsk <a href="3">\bla mame tu link <a href="4"> a tady taky <a href="5"> john@turion ~ $ cat test | sed 's/>/>\n</g; s/</\n</g' | sed -n '/^<a href=".*">/p' <a href="1"> <a href="2"> <a href="3"> <a href="4"> <a href="5">A nebo abys netvrdil, že je to jednorázový konkrétní hack, tak lze si zařídit jednoduchoučký skriptík
grep-o:
#! /bin/sh sed "s/\($1\)/\n\1\n/g" $2 | sed -n "/$1/p"a teď:
john@turion ~ $ ./grep-o '<a [^>]*>' test <a href="1"> <a href="2"> <a href="3"> <a href="4"> <a href="5"> john@turion ~ $ echo "<a hhhh> <b jjjj> <a xxx>" | ./grep-o '<a [^>]*>' - <a hhhh> <a xxx>
sed -e "s/\($1\)/\n\1\n/g" -ne "/$1/p" souborje kratší (a doufám, že funguje, hehe... zrovna to nemůžu ověřit. ale řekl bych, že jo).
Ale jo, určitě to moje jde napsat i nějak jinak, jen tak mě napadá
sed -e "s/\($1\)/\n\1\n/g" "$2" | grep "$1"
Ale pořád to není řešení problému, rpotože to funguje jen a pouze pokud vím, co najdu. Tedy abych to upřesnil - mohl bych např. chtít hledat ne celý odkaz, ale jen to co je v href="". Tedy něco takového:
sed 's/<a [^>]*href="\([^"]*\)"[^>]*>/\n\1\n/g' test.txtTo sice krásně funguje, ale pak už nedokážu sestavit ten druhý sed (či grep), protože prostě nemůžu vědět co v tom href="" bude uloženo. Tedy i když právě si uvědomuju, že tohle bych asi neudělal ani s grep - o
Každopádně je nějaké řešení i pro tento případ? Ono by to tedy samozřejmě šlo udělat více sedy v koloně, ale neexistuje i nějaké hezší/čistší/jednodušší řešení? Prostě něco jako příkaz print v sedu, ale aby vypsal vždy pouze třeba \1 a ne celý řádek.
[mikos@tauri ~]$ awk '{match($0, /<a [^>]*href="([^"]*)"[^>]*>/, arr); print arr[1]}' test.txt
bla1a
bla2
bla3a
Jenže jak je vidět, příkaz "match" bere vždy jen první výskyt daného regexpu (tedy jako sed 's/pattern//', prostě bez onoho obligátního 'g'). Navíc co jsem tak koukal, je onen třetí argument u příkazu match také jen GNU rozšířením (tedy pouze v gawku).
To to opravdu není v sedu ani v awku nějak elegantně a jednoduše řešitelné? To bych opravdu na takovou blbost musel používat python (nebo nedejbože perl, fuj :-P)?
grep -o bude vycházet trošku složitěji, proto asi grep tuto volbu má. Tak už to většinou bývá, že náhrada za něco bývá komplikovanější.
Nejjednodužší, nejpřehlednější a funkční řešení zadaného úkolu grep -o mi připadá (viz. výše) udělat si jednořádkový miniskriptík s obsahem :
sed -e "s/\($1\)/\n\1\n/g" "$2" | grep "$1"a pak ten miniskriptík volat s parametry :
# miniskriptik hledany_retezec v_souboruAle určitě k zadanému cíli vede cest více.
Tiskni
Sdílej: