Kamelhülle eine "gestrichelte" Saite

315
TheIcemanCometh

Ich bin mit * nix-Scripting ziemlich unerfahren, und ich muss eine Zeichenfolge mit durch Bindestriche getrennten Kleinbuchstaben nehmen und diese in eine neue Zeichenfolge umwandeln, wobei die Bindestriche entfernt werden und der erste Buchstabe nach jedem ursprünglichen Bindestrich mit Großbuchstaben. Zum Beispiel möchte ich nehmen

one-two-three-four-five

und konvertiere es in

oneTwoThreeFourFive

Die Lösung muss in der Lage sein, mehrere Bindestriche (einschließlich keiner) zu verarbeiten, und kann bei Bedarf andere * nix-Dienstprogramme wie sed, awk usw. verwenden.

1
Was meinst du damit, "einschließlich" keiner zu sein - das wäre nur das ursprüngliche Wort ... onetwo-drei wäre onetwoThree Kinnectus vor 7 Jahren 0
@BigChris Ich denke, OP bedeutet einfach, dass die vorgeschlagene Lösung nicht davon ausgehen kann, dass überhaupt irgendwelche Bindestriche vorhanden sind, und diesen Fall sorgfältig behandeln muss. a CVn vor 7 Jahren 0
@ MichaelKjörling Und die Worte für ihn aufteilen? Gee, ich werde diesen weitergeben. MariusMatutiae vor 7 Jahren 0
@ MichaelKjörling - Das stimmt. Wenn ich den String "Baseball" übergeben würde, muss die Lösung das unberührte zurückgeben ... TheIcemanCometh vor 7 Jahren 0

1 Antwort auf die Frage

2
choroba

Perl zur Rettung:

echo one-two-three-four-five | perl -pe 's/-(.)/\u$1/g' 

\u upcases das folgende Zeichen.

Funktioniert perfekt. Getestet auf MacOS (El Capitan). TheIcemanCometh vor 7 Jahren 0
Auch auf Debian Wheezy getestet und funktioniert wie ein Zauber. a CVn vor 7 Jahren 0