如何将下划线分隔的单词转换为“camelCase”?这是我正在尝试的:
echo "remote_available_packages" | sed -r 's/([a-z]+)_([a-z])([a-z]+)/\1\U\2\L\3/'
但它返回remoteAvailable_packages
时没有更改p
in packages
。
答案1
这是这样做的(在 GNU sed 中):
echo "remote_available_packages" | sed -E 's/_(.)/\U\1/g'
答案2
在 awk 中
echo 'remote_available_packages' | awk -F _ '{printf "%s", $1; for(i=2; i<=NF; i++) printf "%s", toupper(substr($i,1,1)) substr($i,2); print"";}'
答案3
在 Perl 中:
echo "remote_available_packages" | perl -pe 's/(^|_)([a-z])/uc($2)/ge'
或者:
echo "remote_available_packages" | perl -pe 's/_([a-z])/uc($1)/ge'
如果第一个字母不应大写。