Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Matesax 20 Dubna 2013, 08:41:27

Název: [Vyřešeno] LineCase into CamelCase
Přispěvatel: Matesax 20 Dubna 2013, 08:41:27
Dobrý den,
naprosto vysílen jsem zjistil, že další práce, která mne čeká je napsána v LineCase - tedy ddd_ddd_ddd... Udělal jsem si script pro nahrazování stringu ve více souborech - ale dělat to ručně by se vůbec nevyplatilo. Ale zase plně automatické by to mohlo nadělat dost kravin. Byl by mi někdo ochoten sesmolit nějaký ten scriptík?

Můj výtvor:
Kód: [Vybrat]
#!/bin/sh

echo ">>> Replaced was in:"

grep -rl $2 $1

grep -rl $2 $1 | xargs sed -i "s/${2}/${3}/g"

Říkám si, že by stačilo dát místo pevného stringu RegEx, no jo, ale jak? :)
Děkuji.
Název: Re:LineCase into CamelCase
Přispěvatel: Matesax 20 Dubna 2013, 11:39:02
Tak nic - už to mám... :)

Kód: [Vybrat]
#!/bin/bash

echo ">>> Replaced was:"

for var in `grep -rwhoiE '([a-z0-9]+_)+[a-z0-9]+' $1`
do
neww=${var//_/ }
neww=`echo $neww | python -c "print raw_input().title()"`
grep -rl $var $1 | xargs sed -i "s/${var}/${neww// /}/g"
echo $var
done

echo ">>> Done!"
Název: Re:[Vyřešeno] LineCase into CamelCase
Přispěvatel: pacholik 20 Dubna 2013, 18:19:20
Ty jo to je dobrá prasárna. To nahrazování v bashi jsem vůbec neznal, odkaď to máš?. Ale co pro příště zkusit spíš něco jako
Kód: [Vybrat]
sed -E 's/_(.)/\U\1/g'
Název: Re:[Vyřešeno] LineCase into CamelCase
Přispěvatel: Matesax 20 Dubna 2013, 18:44:45
Účel to splnilo - co více řešit... :) Já Bash nemám rád - a scripty celkově. Co mi ale v Unixu zbývá... (Velkou výjimkou je Ruby.) Těchto utilit atd. je jako... Jasně, sed znám, ale i ten má očividně tisíce utilitek...

http://tldp.org/LDP/abs/html/string-manipulation.html