Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: [Vyřešeno] LineCase into CamelCase  (Přečteno 1348 krát)

Matesax

  • Host
[Vyřešeno] LineCase into CamelCase
« kdy: 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.
« Poslední změna: 20 Dubna 2013, 11:39:50 od Matesax »

Matesax

  • Host
Re:LineCase into CamelCase
« Odpověď #1 kdy: 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!"

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:[Vyřešeno] LineCase into CamelCase
« Odpověď #2 kdy: 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'

Matesax

  • Host
Re:[Vyřešeno] LineCase into CamelCase
« Odpověď #3 kdy: 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
« Poslední změna: 20 Dubna 2013, 18:46:50 od Matesax »

 

Provoz zaštiťuje spolek OpenAlt.