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

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 24.5.1 Havier. Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    včera 19:44 | IT novinky

    Společnost xAI založena Elonem Muskem a stojící za AI LLM modelem Grok získala investici 6 miliard dolarů.

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

    Finálový zápas mistrovství světa v ledním hokeji přinesl nový rekord NIX.CZ (𝕏): "Dosavadní absolutní maximum našeho propojovacího uzlu bylo překonáno v čase 21:10, kdy jsme při přenosu dat dosáhli 3,14 Tbps. Je třeba také doplnit, že po deváté hodině večerní byly na maximu i ostatní datové přenosy nesouvisející s hokejovým šampionátem".

    Ladislav Hagara | Komentářů: 2
    včera 15:11 | Pozvánky

    Přihlaste svou přednášku na další ročník konference LinuxDays, který proběhne 12. a 13. října na FIT ČVUT v pražských Dejvicích. CfP poběží do konce prázdnin, pak proběhne veřejné hlasování a výběr přednášek.

    Petr Krčmář | Komentářů: 0
    25.5. 19:00 | Zajímavý projekt

    Na crowdsourcingové platformě Crowd Supply byla spuštěna kampaň na podporu open source biometrického monitoru ve tvaru hodinek HealthyPi Move. Cena je 249 dolarů a plánovaný termín dodání listopad letošního roku.

    Ladislav Hagara | Komentářů: 13
    24.5. 22:22 | Upozornění Ladislav Hagara | Komentářů: 21
    24.5. 17:44 | Nová verze

    Firma Murena představila /e/OS verze 2.0. Jde o  alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).

    Fluttershy, yay! | Komentářů: 0
    24.5. 14:33 | Zajímavý software

    Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.

    Ladislav Hagara | Komentářů: 1
    24.5. 13:33 | Nová verze

    HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 3
    23.5. 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (89%)
     (3%)
     (4%)
     (4%)
    Celkem 889 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Dotaz: Nahrazení hodnoty v array

    5.3.2013 12:23 BLACK
    Nahrazení hodnoty v array
    Přečteno: 244×
    Zdravím všechny, snažím se vyřešit jeden pro mne celkem neřešitelný probém. Mám definované pole
    ARR=(
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "ssssssssssssss"
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "xxxxxxxxxxxxxx"
    )
    A potřebuji nahradit v tomto poli hodnotu ssssssssssssss za xxxxxxxxxxxxxx. Neporadil by někdo jak to provéct v bash/shell? Děkuji

    Odpovědi

    5.3.2013 14:28 GiGo
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    ARR[7]=xxxxxxxxxxxxxx
    5.3.2013 16:44 Kit
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    V shellu se dobře dělá se soubory, ale práce s polem je v něm kostrbatá. Skutečně tu změnu potřebuješ dělat na poli?
    5.3.2013 19:00 j
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    Chjo, co tak zkusit google? 10s ...
    #!/bin/bash
    
    ARR=(
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "ssssssssssssss"
    "xxx" "xxxxxxxxxxxxxx"
    "xxx" "xxxxxxxxxxxxxx"
    )
    
    x="ssssssssssssss"
    
    len=${#ARR[@]}
    
    for (( i=0; i< len; i++ ))
    do
        if [ "${ARR[i]}" == "$x" ]
        then
            ARR[i]="kkk"
            echo ${ARR[i]}
        fi
    done
    
    5.3.2013 21:02 bashoid
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    Proč to dělat jednoduše, když máme i bash:

    ARR=${ARR[@]/ssssssssssssss/xxxxxxxxxxxxxx}
    5.3.2013 21:46 bashoid
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    Pardon, drobný nedoraz, jak říkám, je to velmi jednoduché:
    ARR=("${ARR[@]/ssssssssssssss/xxxxxxxxxxxxxx}")
    5.3.2013 21:47 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array

    To nie je spravne riesenie, spravne je to nasledovne:

    ARR=( "${ARR[@]/ssssssssssssss/xxxxxxxxxxxxxx}" )

    alebo pre viac ako prvy vyskyt daneho retazca sssssssssssss je to nasledovne:

    ARR=( "${ARR[@]//ssssssssssssss/xxxxxxxxxxxxxx}" )
    5.3.2013 22:17 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    Je otázka, jestli děláte opravdu to, co je zadáno.

    Když někdo řekne že chce v poli změnit hodnotu ssss na xxxx, první mne napadne, že chce v těch prvcích pole, které mají hodnotu rovnu ssss nahradit jejich tuto hodnotu hodnotou yyyy.

    Až když jste navrhl vaše řešení mne napadlo, že by v zadání mohlo jít o fulltextové nahrazování, hodnoty ve smyslu řetězce, nikoliv hodnoty prvku pole.

    Takže záleží na tom, co je cílem. Abychom při nahrazování ryb kočkami nedostali velkočku.

    Osobně tipuji že podle toho jak je to zadáno se mají opravdu nahrazovat ryby kočkami, ne velryby velkočkami.
    5.3.2013 23:02 meta
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    V zadání je dokonce v tomto poli. Myslím, že literu zadání doslovně splnil i první humorista.
    5.3.2013 23:03 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array

    To je dobra poznamka a popravde dost dolezita, kedze je aj mojim nazorom, ze nahradzujeme hodnoty jednotlivych clenov pola. Ale co som opravil riesenie vyssie, je stale len nahradzovanie retazcov, kedy nahradenie retazca sss retazcom xxx plati aj pre aaasss a taktiez aj pre aaasssbbbssssss a podobne.

    Riesenim pre nahradzovanie hodnot clenov pola by mohlo byt aj nasledovne:

    patrik@thinkpad:~$ echo "${pole[@]}"
    aaaccc bbb ccc dddcccddd ccc
    patrik@thinkpad:~$ once=0; value1='ccc'; value2='xxx'; num=0; for item in "${pole[@]}"; do [[ "$item" == "$value1" ]] && { pole[$num]="$value2"; [[ "$once" -eq 0 ]] && break; }; (( num++ )); done
    patrik@thinkpad:~$ echo "${pole[@]}" 
    aaaccc bbb xxx dddcccddd ccc
    5.3.2013 23:11 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Nahrazení hodnoty v array
    Osobně v momentě, kdy stejně z technických důvodů potřebuji index, rezignuji na cool for item in array a udělám prostý for cyklus přes prvky toho pole indexované tím indexem jako je uvedeno v příspěvku č. 3 od j, připadá mi to i konzistentnější ve smyslu že nahrazuji s jistotou přesně to, co jsme před tím porovnal a našel shodu a tedy nahradit chtěl.

    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.