bash-下划线后的大写第一个字符

时间:2018-11-24 15:28:16

标签: bash

我要在下划线后的第一个字符和每个第一个字符都大写。例如:

foo="text_search";

//uppercase first characters

echo $foo;

应输出“ Text_Search”

我尝试了以下方法:

UCF_textSearch=${foo^}

echo UCF_textSearch

但是它输出“ Text_search”而不是“ Text_Search”。

3 个答案:

答案 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