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

Dotaz: Prikaz sed

3.7.2012 11:57 roman
Prikaz sed
Přečteno: 787×
Odpovědět | Admin
Dobrý den. Co udělá prosím níže uvedený příkaz v bash a zejména sed v příkazu?

for file in *\*csv ; do f=`echo $file |sed 's/-/_/g'` ; mz "$file" "f"; done

Děkuji.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.7.2012 12:09 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Prikaz sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed nahradí všetky výskyty znaku '-' za znak '_'

A keby tam miesto mz bolo mv, tak celý ten príkaz hromadne premenováva csv súbory tak, aby sa v ich mene pomlčka nahradila podčiarkovníkom.
3.7.2012 12:57 roman
Rozbalit Rozbalit vše Re: Prikaz sed
Děkuji za odpověď. Bebo-li, když je v adresáři x souborů typu a-b-c.csv, příkaz udělá ze všech a_b_c.csv. Chápu to dobře?
3.7.2012 13:28 leste
Rozbalit Rozbalit vše Re: Prikaz sed
Jo. Jen to chce nahradit mz za mv a před f dát dolar.
3.7.2012 12:10 Atrament
Rozbalit Rozbalit vše Re: Prikaz sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
nahradí všechny - za _
3.7.2012 15:14 Kit
Rozbalit Rozbalit vše Re: Prikaz sed
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ten sed mi na takovou trivialitu nějak nesedí. Ani echo.
for file in */*csv; do mv "$file" "${file//-/_}"; done
4.7.2012 14:22 Petr
Rozbalit Rozbalit vše Re: Prikaz sed
Netvrdim, ze je to nejstastneji zapsano, ale to co jsi uvedl bude fungovat jen v bash.
rADOn avatar 4.7.2012 16:39 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Prikaz sed
To je pravda, ale na debianu s jeho pitomouckym dashem stejne pouzije radsi rename ktery umi poctivy regexy. A btw na prostou zamenu znaku v textu je jednodussi pouzit tr, zvlaste kdyz clovek v syntaxi sedu plave jako napriklad ja :-)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
4.7.2012 19:33 Kit
Rozbalit Rozbalit vše Re: Prikaz sed
No a? Stejně většina z nás Bash používá. Ti, kteří ne, si to ve svém shellu zpravidla umí udělat jinak, viz rename s regulárním výrazem. Výhodou mého řešení je, že se nespouští zbytečně další proces.

Jistě, dá se to ještě urychlit použitím jednoho příkazu find s vhodnými parametry, případně jednoho rename.

sed, awk nebo tr jsou sice velmi rychlé utility, ale šetřím si je na zpracování tisíců řádek, resp. na nahrazování bashových cyklů, protože při zpracování cyklů je Bash velmi pomalý.
7.7.2012 14:39 ich
Rozbalit Rozbalit vše Re: Prikaz sed
Nekdo bash nepouziva. Lepsi je psat univerzalne. Az si zmeni distribuci nebo shell bude koukat, proc mu skript nebeha. A ze se spusti proces navic? Koho to boli? Sed neni zadna virtualni masina.
David Watzke avatar 7.7.2012 17:09 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Prikaz sed
Vždycky záleží na situaci. Když se něco volá mnohokrát, pak ten proces navíc může "bolet" dost. Zrovna v tomto případě mi připadá naprosto úchylný "pajpovat v subshellu".
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
8.7.2012 00:54 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Prikaz sed
Dotaz byl na bash, takže vhodná odpověď je asi "příkaz spustí zbytečně mnoho procesů" a správě je to v bash takto: (Kitovo řešení).

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.