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í
×
včera 09:00 | Komunita

V Brně na FIT VUT probíhá DevConf.CZ 2020, již dvanáctý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě. Na programu je celá řada zajímavých přednášek a workshopů. Aktuální dění lze sledovat například na Twitteru.

Ladislav Hagara | Komentářů: 0
23.1. 23:44 | Komunita

Společnost Psyonix, v květnu 2019 koupena společností Epic Games, oznámila konec podpory počítačové hry Rocket League na Linuxu a macOS. Poslední aktualizace pro tyto operační systémy vyjde v březnu a odstraní možnost hrát tento automobilový fotbal online.

Ladislav Hagara | Komentářů: 12
23.1. 14:33 | Zajímavý článek

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 89 (pdf), HackSpace 26 (pdf) a 27 (pdf) a Wireframe 28 (pdf), 29 (pdf) a 30 (pdf).

Ladislav Hagara | Komentářů: 0
23.1. 14:11 | Nová verze

Byla vydána nová verze 12.7 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu.

Ladislav Hagara | Komentářů: 2
23.1. 11:44 | Zajímavý článek

Michael Stapelberg na svém blogu popisuje projekt minitrd, který je součástí linuxové distribuce distri. Jedná se o implementaci initramfs v programovacím jazyce Go. V článku popisuje jak funguje a srovnává časy sestavení pomocí dracutu a dobu bootování. Pro zrychlení používá různé triky jako například pigz místo gzipu.

joejoe | Komentářů: 11
22.1. 21:33 | Nová verze

Sway, dlaždicový (tiling) správce oken pro Wayland kompatibilní s i3, byl vydán ve verzi 1.4. Do vývoje se zapojilo 52 vývojářů. Přehled novinek na GitHubu. Zdůraznit lze podporu VNC (wayvnc) nebo částečnou podporu Mate panelu.

Ladislav Hagara | Komentářů: 8
22.1. 19:55 | Nová verze

Dokumentační tým LibreOffice vydává aktualizovanou příručku pro LibreOffice Math pro verzi LibreOffice 6.4. Update příručky provedl ruský dobrovolník Roman Kuzněcov. Český překladatelský tým hledá další překladatele pro překlad příruček, detaily na wiki.

Zdeněk Crhonek | Komentářů: 0
22.1. 19:00 | Zajímavý projekt

CutiePi Shell (GitHub) je nové open source uživatelské rozhraní pro mobilní zařízení vytvořené pro tablet CutiePi postavený na Raspberry Pi.

joejoe | Komentářů: 1
22.1. 11:44 | Nová verze

Vyšla nová verze nástroje pro správu diskových oddílů GParted a distribuce GParted Live, která obsahuje tento a další nástroje pro zálohování či obnovu dat. GParted 1.1.0 aktualizuje překlady a opravuje chyby včetně v např. přesunu uzamknutých šifrovaných oddílů LUKS, výpočtu velikosti souborového systému JFS či rozpoznávání členů ATARAID a jejich stavu. GParted Live 1.1.0-1 pak obsahuje novou verzi GParted, Linux 5.4.13 a vůbec novější balíčky z Debianu Sid.

Fluttershy, yay! | Komentářů: 1
22.1. 09:55 | Zajímavý článek

Jiří Eischmann se v příspěvku /e/: Android bez Googlu na starém telefonu na svém blogu podělil o zkušenosti s mobilním operačním systémem /e/ (Wikipedie) na telefonu Samsung Galaxy S4 Mini: Pokud hledáte pro svůj androidí telefon systém bez závislosti na Googlu, je to asi ta nejlepší volba.

Ladislav Hagara | Komentářů: 17
Zdají se vám sny s IT tématikou?
 (9%)
 (1%)
 (13%)
 (17%)
 (53%)
 (7%)
Celkem 261 hlasů
 Komentářů: 10, poslední 18.1. 16:18
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: 365×
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
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: 57
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.