abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:22 | Nová verze

    Byla vydána nová verze 15.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 19:11 | Zajímavý projekt

    Vývojáři Ubuntu představili projekt Myna, tj. iniciativu zaměřenou na přidání funkce převodu řeči na text do prostředí desktopu Ubuntu. Dle plánu již v Ubuntu 26.10.

    Ladislav Hagara | Komentářů: 0
    včera 18:33 | Zajímavý software

    Společnost Epic Games představila nový open source systém pro správu verzí Lore navržený pro "bezprecedentní škálovatelnost dat i týmů a optimalizovaný pro projekty, včetně her a zábavy, které kombinují kód s velkými binárními soubory, aby uspokojil potřeby vývojářů i umělců". Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 0
    včera 15:33 | IT novinky

    Úřad pro ochranu hospodářské soutěže (ÚOHS) provedl v říjnu 2024 místní šetření u společnosti Seznam.cz. Úřad prověřoval důvodné podezření na možné protisoutěžní jednání, konkrétně zneužití dominantního postavení. Krajský soud v Brně v květnu 2025 konstatoval, že toto šetření bylo nezákonné. Nejvyšší správní soud (NSS) včera rozhodl, že šetření bylo provedeno v souladu se zákonem. Krajský soud bude muset případ posoudit znovu.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Byl představen skládací telefon Commodore Callback 8020. Ani hloupý, ani chytrý. Pro fanoušky Commodore a digitálního minimalismu. Bez webového prohlížeče a sociálních sítí. S předinstalovaným WhatsAppem. S operačním systémem Sailfish OS.

    Ladislav Hagara | Komentářů: 2
    včera 08:22 | Bezpečnostní upozornění

    V OpenBSD byla objevena 27 let stará chyba v ppp pomocí níž lze vzdáleně obejít autentifikaci. Chyba byla nahlášena 12.6. a 14.6. byla opravena. Bližší info v článku A 27-Year-Old Authentication Bypass in OpenBSD's PPP Stack.

    Max | Komentářů: 6
    včera 05:22 | Zajímavý článek

    Odpověď Evropské komise (pdf) k evropské občanské iniciativě Stop Destroying Videogames, jež je součástí hnutí Stop Killing Games: "Komise se domnívá, že v této fázi nemůže navrhnout právní povinnost zachovat hratelnost videoher poté, co přestaly být poskytovány komerčně. Důvodem jsou i stávající práva duševního vlastnictví. Podle autorského práva EU mají nositelé práv výlučná práva ke svým výtvorům. Kromě autorských práv mohou být

    … více »
    Ladislav Hagara | Komentářů: 15
    16.6. 16:11 | Nová verze

    Byl vydán Mozilla Firefox 152.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 152 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 1
    16.6. 14:11 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.7 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 23
    16.6. 11:44 | Komunita

    Hříčka xsnow, která na ploše spustí sněžení, je protestware. Pokud jste v Rusku (LANG=ru), zobrazuje ukrajinské vlajky.

    Ladislav Hagara | Komentářů: 41
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (16%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1930 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: sed - substituce promenou nefunguje

    4.10.2009 03:44 anon123 | skóre: 35 | blog: ganomi
    sed - substituce promenou nefunguje
    Přečteno: 371×

    Ahoj.

    Pisu malej skriptik a nefunguje mi substituce s promenou u sed.

    changeName(){
    SPEED="$(echo ${LINEARRAY[8]} | sed -e 's/<[^>]*>//g' speedline.txt | sed -e 's/Speed://g')"
    TEMP=$(echo ${LINEARRAY[1]})  | sed  "s/-[0-9]*/'SPEED'/"
    echo -e "$TEMP"
    }

    Vyzkousel jsem:

    TEMP=$(echo ${LINEARRAY[1]})  | sed  "s/-[0-9]*/'"SPEED"'/"
    TEMP=$(echo ${LINEARRAY[1]})  | sed  's/-[0-9]*/'SPEED'/'
    TEMP=$(echo ${LINEARRAY[1]})  | sed  "s/-[0-9]*/${SPEED}/"

    Hazi mi to error:

    sed: -e expression #1, char 36: unknown option to `s'
    

    Zajimave je, ze na konzoli to funguje:

    echo -e "   <name>-265</name>" | sed -e 's/-[0-9]*/'$LOGNAME'/'

     

    Muzete nekdo poradit?
    Dik

    Odpovědi

    4.10.2009 04:10 anon123 | skóre: 35 | blog: ganomi
    Rozbalit Rozbalit vše Re: sed - substituce promenou nefunguje

    Uprava:
    v mem prispevku jsem zapomnel na "$" pred SPEED.

    Takze spravne:

    TEMP=$(echo ${LINEARRAY[1]})  | sed  "s/-[0-9]*/'"$SPEED"'/"
    TEMP=$(echo ${LINEARRAY[1]})  | sed  's/-[0-9]*/'$SPEED'/'
    TEMP=$(echo ${LINEARRAY[1]})  | sed  "s/-[0-9]*/${SPEED}/"

    Toto hazi error, kdyz to mam ve scriptu.


    4.10.2009 07:45 l4m4
    Rozbalit Rozbalit vše Re: sed - substituce promenou nefunguje
    Takovou věc bych napsal v něčem, co umí nahrazování regulárních výrazů samo (pytho, ruby, perl, ...) a nespouštěl tisíckrát sed, který je navíc řádkově orientovaný, takže je problém s elementy přes víc řádků
    < tag a="b"
              c="d">
    a tohle
    sed -e 's/<[^>]*>//g' speedline.txt | sed -e 's/Speed://g'
    se taky normálně napíše
    sed -e 's/<[^>]*>//g' -e 's/Speed://g' speedline.txt
    nebo s GNU sedem
    sed 's/<[^>]*>//g;s/Speed://g' speedline.txt
    K původnímu dotazu: proměnná $LOGNAME zřejmě obsahuje znaky, které jsou v daném kontextu pro sed speciální (řekl bych, že lomítko). Je možno hodnotu proměnné oescapovat (např. dalším sedem)
    LOGNAME=$(sed 's/[\/...]/\\\0/g' <<<"$LOGNAME")
    ale je to celé šílený postup, který se používá nanejvýš v configure, protože to musí být ultrapotrabilní a nepoužívat nic použitelného. Správný postup je použít pro řešení problému nástroj, který je k tomu vhodný.
    4.10.2009 11:10 anon123 | skóre: 35 | blog: ganomi
    Rozbalit Rozbalit vše Re: sed - substituce promenou nefunguje

    Chapu co tim chces rici, ale nebudu se 30 dni ucit neco, co pouziji jenom jednou. Navic to potrebuji co nejdrive, volim tedy nastroj, kterym se to da zvladnout co nejdriv.

    Jinak diky za ty upravy. To samozrejme implementuji.

    Splacal jsem to takto:

    changeName(){
    
    SPEED="$(echo ${LINEARRAY[8]} | sed -e 's/<[^>]*>//g' | sed -e 's/.*Speed://g')"
    
    TEMP1=$(echo -e "${LINEARRAY[1]}" | sed -e 's/-[0-9]*<\/name>//')
    TEMP2=$(echo -e "${LINEARRAY[1]}" | sed -e 's/.*<name>-[0-9]*//')
    
    TEMP=$TEMP1$SPEED$TEMP2
    LINEARRAY[1]=$TEMP
    }
    
    4.10.2009 19:10 pozortucnak | skóre: 21 | blog: vecny_windowsar
    Rozbalit Rozbalit vše Re: sed - substituce promenou nefunguje
    Perl je na tohle v pohode... nic se učit nemusíš
    echo aaa | perl -pe "s/aaa/$USER/g"
    
    Jsem mimořádně obtížný případ
    5.10.2009 01:00 l4m4
    Rozbalit Rozbalit vše Re: sed - substituce promenou nefunguje
    Toto samozřejmě trpí identickým problémem, pokud je $USER proměnná shellu, kterou cpeš do zdrojáku perlu. Jiná situace by byla s perlí proměnnou $USER, ale to bys to, jak jsem říkal, musel psát v perlu (nebo raději něčem čitelnějším) celé.
    5.10.2009 11:38 saslik
    Rozbalit Rozbalit vše Re: sed - substituce promenou nefunguje

    Tipuju ze problem je v obsahu promenne SPEED. Prikaz pro sed se trextove sestavi a pokud je tam vyznamny znak, napriklad lomitko v "km/hour", tak to bude chybne. Pro ladeni takovych skriptu je dobre vzdy vypsat co se bude spoustet a pak to spustit, pak uvidis jestli se to sestavilo dobre nebo ne.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.