我要在下划线后的第一个字符和每个第一个字符都大写。例如:
foo="text_search";
//uppercase first characters
echo $foo;
应输出“ Text_Search”
我尝试了以下方法:
UCF_textSearch=${foo^}
echo UCF_textSearch
但是它输出“ Text_search”而不是“ Text_Search”。
答案 0 :(得分:3)
使用GNU sed的解决方案:
foo="the_quick_brown_dog"
foo=$(echo "$foo" | sed -e 's/\(^\|_\)\([a-z]\)/\1\u\2/g')
echo $foo
结果:
$ ./test.sh
The_Quick_Brown_Dog
答案 1 :(得分:2)
您还可以在脚本中混合使用bash和sed来实现功能:
foo="text_search";
uppercase() {
echo "${1^}" | sed 's/_\([a-z]\)/_\u\1/g'
}
foo=$(uppercase "$foo")
echo "$foo" # => Text_Search
答案 2 :(得分:0)
如果您使用的是Mac,则可能需要使用gsed。
$ echo $foo | gsed 's/\(\(_\|^\).\)/\U\1/g