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 | Zajímavý projekt

V souvislosti s koronavirem SARS-CoV-2 a onemocněním COVID-19 vzniká celá řada open source projektů. Zmínit lze například ochrannou polomasku vytisknutelnou i na běžné 3D tiskárně bez použití speciálních materiálů BUT–H1 nebo obličejový ochranný štít.

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

OpenRGB (dříve OpenAuraSDK) je nový svobodný software (verze 0.1) umožňující nastavení podsvícení řady různých „herních“ komponent a periferií (dokáže se také integrovat s projektem OpenRazer); seznam již podporovaného hardwaru je ve wiki projektu.

Fluttershy, yay! | Komentářů: 0
včera 15:33 | Zajímavý článek

Sergio Prado v článku Jak se testuje jádro Linux? poskytuje přehled nástrojů používaných právě k testování Linuxu, a to v oblastech statické analýzy kódu, automatizovaného testování a průběžné integrace.

Fluttershy, yay! | Komentářů: 0
včera 15:22 | Nová verze

Byla vydána verze 0.20.0 open source počítačového planetária Stellarium (Wikipedie). Proběhlo refaktorování kódu. Vylepšeno bylo GUI. Vyzkoušet lze webovou verzi Stellarium Web.

Ladislav Hagara | Komentářů: 4
včera 07:00 | Nová verze

Byla vydána verze 0.5.5 klienta open source herní platformy pro Linux Lutris (Wikipedie). Přehled novinek na GitHubu. Zmínit lze například počáteční podporu Humble Bundle.

Ladislav Hagara | Komentářů: 0
včera 06:00 | Nová verze

Po 9 týdnech vývoje od vydání Linuxu 5.5 oznámil Linus Torvalds vydání Linuxu 5.6 (LKML). Přehled nových vlastností a vylepšení na stránkách LWN.net (1, 2) a Linux Kernel Newbies. Zdůraznit lze začlenění WireGuardu. Kódové jméno Linuxu 5.6 zůstává Kleptomaniac Octopus.

Ladislav Hagara | Komentářů: 13
29.3. 19:33 | Nová verze

Byla vydána nová major verze 2.9.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy na PIXLS.US. Zmínit lze například generování moaré animací. Ukázka na YouTube.

Ladislav Hagara | Komentářů: 0
28.3. 17:33 | Zajímavý článek

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 91 (pdf) a 92 (pdf), HackSpace 29 (pdf), Hello World 12 (pdf), Wireframe 33 (pdf), 34 (pdf) a 35 (pdf).

Ladislav Hagara | Komentářů: 2
28.3. 16:11 | IT novinky

Společnost FriendlyElec začala prodávat svůj nejnovější miniaturní jednodeskový počítač NanoPi R2S. Počítač v ceně 22 dolarů zaujme především dvěma Gigabit Ethernet porty.

Ladislav Hagara | Komentářů: 42
27.3. 07:00 | Zajímavý článek

David Malcolm se ve svém příspěvku na blogu vývojářů Red Hatu rozepsal o statické analýze a nové volbě -fanalyzer v GCC 10. Ukázkové příklady lze vyzkoušet také online na stránce Compiler Explorer.

Ladislav Hagara | Komentářů: 1
Se kterými dopady COVID-19 už jste se přímo osobně setkali?
 (3%)
 (54%)
 (39%)
 (38%)
 (37%)
 (6%)
 (20%)
Celkem 436 hlasů
 Komentářů: 43, poslední 29.3. 20:38
Rozcestník

www.AutoDoc.Cz

Dotaz: Bash - Jak odstranit část cesty

3.2.2019 23:57 Janek
Bash - Jak odstranit část cesty
Přečteno: 369×
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: 76 | blog: Výlevníček | 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
Když je letní čas, tak chodí Polednice strašit v poledne nebo v jednu?
4.2.2019 01:51 Andrej | skóre: 47 | blog: Republic of Mordor | Zürich
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
ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
Řešení 1× (Bherzet)
4.2.2019 01:58 Andrej | skóre: 47 | blog: Republic of Mordor | Zürich
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: 47 | blog: Republic of Mordor | Zürich
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: 58
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: 47 | blog: Republic of Mordor | Zürich
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: 47 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: Bash - Jak odstranit část cesty

Ne, dirname.

ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
4.2.2019 14:19 Kit | skóre: 44 | 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: 47 | blog: Republic of Mordor | Zürich
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.