Byl vydán Mozilla Firefox 145.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Ukončena byla podpora 32bitového Firefoxu pro Linux. Přidána byla podpora Matrosky. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 145 bude brzy k dispozici také na Flathubu a Snapcraftu.
Lidé.cz (Wikipedie) jsou zpět jako sociální síť s "ambicí stát se místem pro kultivované debaty a bezpečným online prostředím".
Byla vydána nová verze 4.4 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.
ASUS má v nabídce komplexní řešení pro vývoj a nasazení AI: kompaktní stolní AI superpočítač ASUS Ascent GX10 poháněný superčipem NVIDIA GB10 Grace Blackwell a platformou NVIDIA DGX Spark. S operačním systémem NVIDIA DGX založeném na Ubuntu.
Desktopové prostredie Trinity Desktop vyšlo vo verzii R14.1.5. Je tu opravená chyba v tqt komponente spôsobujúca 100% vyťaženie cpu, dlaždice pre viac monitorov a nemenej dôležité su dizajnové zmeny v podobe ikon, pozadí atď. Pridaná bola podpora distribúcií Debian Trixie, Ubuntu Questing, RHEL 10 a OpenSUSE Leap 16.
Grafická aplikace Easy Effects (Flathub), původně PulseEffects, umožňující snadno povolovat a zakazovat různé audio efekty v aplikacích používajících multimediální server PipeWire, byla vydána ve verzi 8.0.0. Místo GTK 4 je nově postavená nad Qt, QML a Kirigami.
Na YouTube lze zhlédnout Godot Engine – 2025 Showreel s ukázkami toho nejlepšího letos vytvořeného v multiplatformním open source herním enginu Godot.
Blíží se konec roku a tím i všemožná vyhlášení slov roku 2025. Dle Collins English Dictionary je slovem roku vibe coding, dle Dictionary.com je to 6-7, …
Cloudflare Radar: podíl Linuxu na desktopu dosáhl v listopadu 6,2 %.
Chcete vědět, co se odehrálo ve světě techniky za poslední měsíc? Nebo si popovídat o tom, co zrovna bastlíte? Pak doražte na listopadovou Virtuální Bastlírnu s mikrofonem a kamerou, nalijte si něco k pití a ponořte se s strahovskými bastlíři do diskuze u virtuálního piva o technice i všem možném okolo. Mezi nejvýznamnější novinky patří Průšovo oznámení Core One L, zavedení RFID na filamentech, tisk silikonu nebo nový slicer. Dozvíte se ale i
… více »
), 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: