Верблюжья оболочка «пунктирная» нить

243
TheIcemanCometh

Я не очень разбираюсь в сценариях * nix, и мне нужно взять строку со строчными словами, разделенными черточками, и преобразовать ее в новую строку с удаленными черточками, а также первую букву после каждого исходного черточки в верхнем регистре. Например, я хочу взять

one-two-three-four-five

и преобразовать его в

oneTwoThreeFourFive

Решение должно быть способно обрабатывать несколько тире (включая ни одной), и при необходимости может использовать другие утилиты * nix, такие как sed, awk и т. Д.

1
Что ты имеешь в виду под словом «включая ни одного» - это было бы просто оригинальным словом ... два-три были бы двумя Kinnectus 7 лет назад 0
@ BigChris Я думаю, что OP просто означает, что предлагаемое решение не может предполагать, что вообще есть какие-либо тире, и должно изящно обработать этот случай. a CVn 7 лет назад 0
@ MichaelKjörling И разделить слова для него? Ну и дела, я передам на этом. MariusMatutiae 7 лет назад 0
@ MichaelKjörling - это правильно. Если бы я должен был передать строку «бейсбол», решение должно вернуть это нетронутым ... TheIcemanCometh 7 лет назад 0

1 ответ на вопрос

2
choroba

Perl to the rescue:

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

\u upcases the following character.

Работает отлично. Проверено на MacOS (Эль-Капитан). TheIcemanCometh 7 лет назад 0
Также протестирован на Debian Wheezy и работает как шарм. a CVn 7 лет назад 0

Похожие вопросы