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 14:11 | Nová verze

    The Document Foundation oznámila vydání nové major verze 25.8 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) a také na Youtube a PeerTube.

    Ladislav Hagara | Komentářů: 1
    dnes 04:00 | Nová verze

    Zeek (Wikipedie), původně Bro, byl vydán v nové major verzi 8.0.0. Jedná se o open source platformu pro analýzu síťového provozu. Vyzkoušet lze online.

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

    Emacs na stříhání videa? Klidně.

    Ladislav Hagara | Komentářů: 4
    včera 15:55 | Nová verze

    Byl vydán Mozilla Firefox 142.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 142 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Zajímavý článek

    Python Developers Survey 2024, výsledky průzkumu mezi vývojáři v Pythonu organizovaném Python Software Foundation ve spolupráci se společností JetBrains v říjnu a listopadu loňského roku. Zúčastnilo se 30 tisíc vývojářů z 200 zemí. Linux používá 59 % z nich.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Zajímavý článek

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 2
    včera 01:55 | Nová verze

    Byla vydána nová verze 2.51.0 distribuovaného systému správy verzí Git. Přispělo 91 vývojářů, z toho 21 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    včera 01:33 | Zajímavý článek

    Po roce bylo vydáno nové číslo magazínu Phrack: Phrack 72.

    Ladislav Hagara | Komentářů: 3
    18.8. 19:33 | Pozvánky

    OpenSSL Corporation zve na den otevřených dveří ve středu 20. srpna v Brně a konferenci OpenSSL od 7. do 9. října v Praze.

    Ladislav Hagara | Komentářů: 4
    18.8. 19:22 | Komunita

    Konference LinuxDays 2025 proběhne o víkendu 4. a 5. října v Praze. Konference OpenAlt 2025 o víkendu 1. a 2. listopadu v Brně. Blíží se konec přihlašování přednášek. Přihlaste svou přednášku (LinuxDays do 31. srpna a OpenAlt do 3. října) nebo doporučte konference známým.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (80%)
     (8%)
     (8%)
     (0%)
     (4%)
     (0%)
    Celkem 25 hlasů
     Komentářů: 4, poslední včera 16:48
    Rozcestník

    Dotaz: Bash - Jak odstranit část cesty

    3.2.2019 23:57 Janek
    Bash - Jak odstranit část cesty
    Přečteno: 459×
    Dobrý večer, nevím jak mám z proměné odstranít string (různé délky) za posledním lomítkem (včetně posledního lomítka). Děkuji

    Řešení dotazu:


    Odpovědi

    4.2.2019 00:12 debian+
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    4.2.2019 00:14 Vlado
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    dirname
    4.2.2019 00:21 Janek
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    Pánové mám v zadání chybu, omlouvám se. Potřebuji odstranit z proměné string (různé délky) před posledním lomítkem (včetně posledního lomítka). Děkuji
    4.2.2019 00:37 Janek
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    Raději uvedu ještě příklady. Tučně označené znaky potřebuji z proměnné odstranit. Děkuji
    sffs/
    asdasd/gfdsfsdf/asdsadas/
    gdgdfg/asdsadasd/fsddgfd/asdsadasds/fsdfdff/sdfdfsdfg/
    Jendа avatar 4.2.2019 01:18 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    $ echo gdgdfg/asdsadasd/fsddgfd/asdsadasds/fsdfdff/sdfdfsdfg/ | rev | cut -d / -f 3- | rev
    gdgdfg/asdsadasd/fsddgfd/asdsadasds/fsdfdff
    
    4.2.2019 01:51 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

    Jednoduchý příklad:

    shopt -s extglob
    cesta='asdasd/gfdsfsdf/asdsadas/'
    echo "${cesta%%*([^/])/}"
    

    Podrobněji k tématu:

    cesty=(
      [0]='sffs/'
      [1]='asdasd/gfdsfsdf/asdsadas/'
      [2]='gdgdfg/asdsadasd/fsddgfd/'
      [2]+='asdsadasds/fsdfdff/sdfdfsdfg/'
    )
    
    # Toto je jen pro jistotu; bývá to zapnuté:
    shopt -s extglob
    
    # Pouze výpis pozměněných cest:
    for cesta in "${cesty[@]}"; do
      # První možnost:
      echo "'${cesta}' -> '${cesta%%*([^/])/}'"
    
      # Druhá možnost:
      echo "'${cesta}' -> '${cesta/%*([^\/])\/}'"
    done
    
    # Transformace pole cest do nových polí:
    bez_konce_1=("${cesty[@]%%*([^/])/}")
    bez_konce_2=("${cesty[@]/%*([^\/])\/}")
    
    # Výpis pro kontrolu:
    for index in "${!cesty[@]}"; do
      echo "'${cesty[index]}' -> '${bez_konce_1[index]}'"
      echo "'${cesty[index]}' -> '${bez_konce_2[index]}'"
    done
    
    4.2.2019 01:58 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

    Nebo pokud je v tom cvičení povolený dirname ;-) tak takhle:

    shopt -s extglob
    cesta='asdasd/gfdsfsdf/asdsadas/'
    echo "$(dirname "${cesta}")/"
    

    dirname se dá taky použít s těmi poli a dalšími triky výše. Ale pozor, dirname nemusí nutně každý považovat za (čistý) Bash, takže záleží na zadání. :-)

    4.2.2019 02:02 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

    extglob je tam teď samozřejmě na houby — copy&paste chyba.

    k3dAR avatar 4.2.2019 14:57 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    v podstate je tam na houby i to echo :-) chapu ze se striktne drzis prikladu kde vypada ze na konci chce mit /, ale vem to z praxe, to pak bude pouzivat ${zjistenej_adresar}${soubor_v_nem}, nebo citelneji ${zjistenej_adresar}/${soubor_v_nem} s tim ze se to interpretuje pak jako // i kdyz to nejspis nicemu nevadi... z praxe je podle me vhodne mit konec promene bez / a lomitko davat v pripade potreby az za tu promenou.
    cesta='asdasd/gfdsfsdf/asdsadas/'
    dirname "${cesta}"
    porad nemam telo, ale uz mam hlavu... nobody
    4.2.2019 23:18 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

    Ano, s lomítkem je to složité, zejména když přijde na to, jaký speciální význam mu dává třeba rsync.

    Tady jsem vycházel z toho, že zadání prostě vyžaduje lomítko.

    Řešení 1× (camel1cz)
    4.2.2019 01:01 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    basename
    Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
    4.2.2019 23:10 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

    Ne, dirname.

    4.2.2019 14:19 Kit | skóre: 45 | Brno
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    echo "${string%/*/}"
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    4.2.2019 23:16 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

    Plus / na konec…

    4.2.2019 15:28 PetebLazar
    Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty
    Nestačí pouze k řetězci přidat "../"? ;-)

    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.