Portál AbcLinuxu, 10. května 2025 08:35

Dotaz: sed editor - extrakce jména souboru

5.7.2007 21:45 banhof
sed editor - extrakce jména souboru
Přečteno: 620×
Odpovědět | Admin
Zdravím. Potřeboval bych poradit, s jakými parametry bych měkl spustit sed aby mi z linuxové nebo windowsové kompletní cesty k souboru (např. /home/franta/Desktop/blbost.txt nebo D:\Documents and Settings\franta\Plocha\blbost.txt) vyextrahoval pouze název souboru. Potřebuji z řádku vlastně odstranit vše až do posledního výskytu "/" nebo "\" včetně. Může mi někdo napsat jak na to? Potřebuju to do zálohovacího skriptu a nevím si rady jak to udělat, takovou šílenost jako manuál k sedu se mi nechce studovat tak snad s tim někdo umí... :-) dík
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.7.2007 21:56 martyone | skóre: 18
Rozbalit Rozbalit vše Re: sed editor - extrakce jména souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
vhodnější bude použít basename popř. možnosti BASHe ;-)
Fuky avatar 7.7.2007 01:18 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sed editor - extrakce jména souboru

Basename si, ale neporadí s Windows oddělovačem ;-) Jinak řešení pomocí Bashe je např. toto:

$ CESTA_LINUX="/adresar1/adresar2/adresar3/soubor"
$ CESTA_WINDOWS="\adresar1\adresar2\adresar3\soubor"
$ echo ${CESTA_LINUX##*/}
soubor
$ echo ${CESTA_WINDOWS##*\\}
soubor

Podrobnosti viz BASH - III (Proměnné - dokončení).

7.7.2007 00:16 Petr "Glubo" Sýkora | skóre: 21 | blog: Glubnik
Rozbalit Rozbalit vše Re: sed editor - extrakce jména souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
V zásadě by mohlo fungovat sed -e 's/^.*[/\\]//'. Dělá to to, že to veme všechny libovolné znaky (.*) od začátku řádku (^) jež následuje / nebo \ ([/\\]). Jelikož * je v sedu defaultně žravá, nasbírá nejvíce znaků, co jde a tedy i případně "neposlední" výskyty lomítek.
„O mrtvých jen v dobrém." „Pojďme se bavit o Stalinovi."
7.7.2007 09:19 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: sed editor - extrakce jména souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdybys ten zálohovací skript psal v Pythonu, tak vůbec nemusíš řešit, na jaké platformě to pojede, protože to bude přenositelné. Funkce os.path.basename() vyextrahuje pouze název souboru, a to jak na linuxu:
>>> import os
>>> cesta = '/home/franta/Desktop/blbost.txt'
>>> print os.path.basename(cesta)
blbost.txt
tak i na windows - ty ale nemám, tak to musím trochu obejít:
>>> import ntpath
>>> cesta = 'D:\\Documents and Settings\\franta\\Plocha\\blbost.txt'
>>> print cesta
D:\Documents and Settings\franta\Plocha\blbost.txt
>>> print ntpath.basename(cesta)
blbost.txt
>>> 

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.