我正在编写一个shell脚本,并有一个像这样的变量:something-that-is-hyphenated

我需要在脚本的各个方面使用它:
something-that-is-hyphenatedsomethingthatishyphenatedSomethingThatIsHyphenated
我已经设法通过使用somethingthatishyphenated剥离了-,将其更改为sed "s/-//g"

我敢肯定有一种更简单的方法,并且还需要知道如何获得 Camel 式的版本。

编辑:从@Michał的答案派生的工作功能

function hyphenToCamel {
    tr '-' '\n' | awk '{printf "%s%s", toupper(substr($0,1,1)), substr($0,2)}'
}

CAMEL=$(echo something-that-is-hyphenated | hyphenToCamel)
echo $CAMEL

编辑:最后,感谢@glenn,一个sed类轮
echo a-hyphenated-string | sed -E "s/(^|-)([a-z])/\u\2/g"

最佳答案

GNU sed单线

echo something-that-is-hyphenated |
sed -e 's/-\([a-z]\)/\u\1/g' -e 's/^[a-z]/\u&/'

替换字符串中的\uthe sed manual中记录。

07-26 09:36